У нас периодически возникала эта проблема, но теперь я могу воспроизводить ее каждый раз. Я увеличиваю счетчик просмотров на моих пользовательских форумах, что вызывает ошибку:
NHibernate.LazyInitializationException: не удалось лениво инициализировать коллекцию, ни один сеанс или сеанс не был закрыт
Эта ошибка возникает в другой коллекции объекта. Если я добавлю:
.Not.LazyLoad ()
К моему беглому отображению, ошибка смещается вокруг моего проекта. Я продолжал отключать отложенную загрузку объектов до тех пор, пока она не достигла места, где отсутствовала отложенная загрузка, а затем он выдал эту ошибку:
NHibernate.LazyInitializationException: Не удалось инициализировать прокси - нет сеанса.
Итак, потом я снял затвор на своей ленивой загрузке, и теперь я вернулся к исходной точке. Это только ошибки, когда я увеличиваю этот счетчик просмотров. Вот фрагмент моего кода сохранения базового класса:
using (ISession session = GetSession())
using (ITransaction tx = session.BeginTransaction())
{
session.SaveOrUpdate(entity);
tx.Commit();
}
Оглядываясь вокруг, я читал в другом посте, что транзакции могут вызывать проблемы, но это было из-за того, где они были размещены. Этот код распространяется на классы, которые отделены от объектов моего домена (классы репозитория). Вот этот пост:
hibernate: LazyInitializationException: не удалось инициализировать прокси
Я не верю, что это моя проблема здесь. Вот мое свободное отображение для первой коллекции, которая выдает ошибку. Есть несколько других подобных коллекций.
HasManyToMany(x => x.Votes)
.WithTableName("PostVotes")
.WithParentKeyColumn("PostId")
.WithChildKeyColumn("VoteId");