Хорошо, я только начинаю переходить в спящий режим (свободно использую).
Что мне в нем нравится, так это то, что я могу использовать шаблон репозитория (читайте об этом в блоге 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 () и т. Д.