Всем привет! Ошибка:
[LazyInitializationException: Initializing[DetalSt.Default.Models.MenuItem#13]-failed to lazily initialize a collection of role: DetalSt.Default.Models.MenuItem.MenuItems, no session or session was closed]
NHibernate.Collection.AbstractPersistentCollection.ThrowLazyInitializationException(String message) +199
NHibernate.Collection.AbstractPersistentCollection.ThrowLazyInitializationExceptionIfNotConnected() +70
NHibernate.Collection.AbstractPersistentCollection.ReadSize() +59
Суть в том, что я пытаюсь дотянуться до коллекции сущностей в подгруженной сущности:
public class MenuItem : DetalSt.Default.Models.IEntity
{
public virtual int Id { get; set; }
public virtual string Uid { get; set; }
public virtual string Header { get; set; }
public virtual string Url { get; set; }
public virtual int QueueNumber { get; set; }
public virtual bool Main { get; set; }
public virtual MenuItem Parent { get; set; }
private IList<MenuItem> _menuItems;
public virtual IList<MenuItem> MenuItems
{
get
{
return _menuItems ?? (_menuItems = new List<MenuItem>());
}
set { _menuItems = value; }
}
}
Разумеется, если я в маппинге укажу Not.LazyLoad(), то все получится.
Доп.инф. Сессий я управляю следующим образом:
protected void Application_BeginRequest()
{
var unitOfWork = DependencyResolver.Current.GetService<IUnitOfWork>() as UnitOfWork;
if (unitOfWork == null)
return;
HttpContext.Current.Items.Add(nhSessionKey, unitOfWork);
unitOfWork.OpenSession();
unitOfWork.BeginTransaction();
}
protected void Application_EndRequest()
{
var unitOfWork = HttpContext.Current.Items[nhSessionKey] as UnitOfWork;
if (unitOfWork == null)
return;
unitOfWork.Commit();
}
UnitOfWork регистрирую в автофаке. Сессия на момент запроса есть, при этом падает с ошибкой, что её нет. Прошу помощи.
public class UnitOfWork : IUnitOfWork
{
private static readonly ISessionFactory _sessionFactory;
private ITransaction _transaction;
public ISession Session { get; private set; }
static UnitOfWork()
{
_sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012.ConnectionString(@"").ShowSql())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<DetalSt.Default.Models.UserMap>())
.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
.BuildSessionFactory();
}
public void OpenSession()
{
Session = _sessionFactory.OpenSession();
}
public void BeginTransaction()
{
_transaction = Session.BeginTransaction();
}
public void Commit()
{
try
{
if (_transaction != null && _transaction.IsActive)
_transaction.Commit();
}
catch
{
if (_transaction != null && _transaction.IsActive)
_transaction.Rollback();
throw;
}
finally
{
Session.Dispose();
}
}
public void Rollback()
{
try
{
if (_transaction != null && _transaction.IsActive)
_transaction.Rollback();
}
finally
{
Session.Dispose();
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
ЗдравствуйтеВопрос: Использую библиотеку ClosedXML, никак не пойму и не могу найти как определить конец листа в файле Excel
В модели Book есть уникальный IdКак выбрать элемент из IEnumerable по Id=1?
Разрабатываю клиент-серверное приложение, где клиенты обмениваются данными в реальном времениНемного разобравшись в теме, выбрал наиболее...