好的,所以我刚刚进入休眠状态(使用流利的)。
我喜欢它的一件事是我可以使用存储库模式(从 nhibernate rhino 博客中了解它)。
基本上使用泛型,我可以创建适用于我所有数据库表的方法。
public interface IRepository<T>
{
T GetById(int id);
ICollection<T> FindAll();
void Add(T entity);
void Remove(T entity);
}
public class Repository<T> : IRepository<T>
{
public ISession Session
{
get
{
return SessionProvider.GetSession();
}
}
public T GetById(int id)
{
return Session.Get<T>(id);
}
public ICollection<T> FindAll()
{
return Session.CreateCriteria(typeof(T)).List<T>();
}
public void Add(T t)
{
Session.Save(t);
}
public void Remove(T t)
{
Session.Delete(t);
}
}
然后我继承 Repository 类,然后我可以添加特定于该实体的方法。
在尝试添加更新方法时,有人提到存储库模式应该作用于集合?我在这里看东西不正确吗?为什么我不能创建更新方法?
我尝试添加更新方法,但我对如何处理会话和更新数据库感到困惑?
我希望每个实体的所有数据库访问都在一个地方,因此 UserRepository 将拥有所有基本的 CRUD,然后可能还有其他一些方法,如 GetUserByEmail() 等。