Я использую ASP.NET MVC + NHibernate + Fluent NHibernate и у меня проблема с отложенной загрузкой.
С помощью этого вопроса ( Как исправить ошибку отложенной загрузки NHibernate «ни одна сессия или сессия не была закрыта»? ) я обнаружил, что должен реализовать Open Session в шаблоне просмотра, но я не знаю, как.
В моих классах репозиториев я использую такие методы
public ImageGallery GetById(int id) {
using(ISession session = NHibernateSessionFactory.OpenSession()) {
return session.Get<ImageGallery>(id);
}
}
public void Add(ImageGallery imageGallery) {
using(ISession session = NHibernateSessionFactory.OpenSession()) {
using(ITransaction transaction = session.BeginTransaction()) {
session.Save(imageGallery);
transaction.Commit();
}
}
}
А это мой вспомогательный класс Session Factory:
public class NHibernateSessionFactory {
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory {
get {
if(_sessionFactory == null) {
_sessionFactory = Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(MyConnString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<ImageGalleryMap>())
.ExposeConfiguration(c => c.Properties.Add("hbm2ddl.keywords", "none"))
.BuildSessionFactory();
}
return _sessionFactory;
}
}
public static ISession OpenSession() {
return SessionFactory.OpenSession();
}
}
Кто-нибудь может помочь мне реализовать шаблон Open Session in View?
Спасибо.