Я в настоящее время использую StructureMap для введения экземпляров NHibernate ISessions с помощью следующего кода:
ObjectFactory.Initialize(x =>
{
x.ForRequestedType<ISession>()
.CacheBy(InstanceScope.PerRequest)
.TheDefault.Is.ConstructedBy(y => NHibernateSessionManager.Instance.GetSession());
});
Я предполагаю что CacheBy (InstanceScope. PerRequest), правильно избавится от ISession, который он создает, но я хотел бы удостовериться. Что самый легкий путь состоит в том, чтобы протестировать это?
Итак, согласно документации StructureMap :
Также обратите внимание, что StructureMap не предоставляет никаких функций для очистки up ресурсов объектов, содержащихся в контейнере (Container.EjectAllInstances () удалит одноэлементные объекты). На сегодняшний день я не обнаружил необходимости в этом поведении или функциональности. Я обычно предполагаю, что достаточно комбинации базовой сборки мусора и правильного дизайна класса.
Я знаю, что при использовании NHibernate лучше всего вызывать ISession.Dispose (), поэтому мне нужно либо вручную очистить его, либо просто полагаться на сборщик мусора, который сделает это за меня.