Я использую NHibernate для своего проекта. Я довольно новичок в работе над NHibernate.NHibernate многих для многих и ISession.Close()
Я использую отношение «многие-ко-многим», сопоставляющее «пользователи» и «роли». Вот код, чтобы заставить пользователя:
public User GetUser(int userId){
using(ISessuib session = new SessionManager().GetSession())
{
return session.Get<User>(userId);
}
}
public void LazyLoadUsingSessionTest(){
var user= GetUser(1);
Assert.NotNull(user.Roels);
}
он бросает исключение: не удалось лениво инициализировать коллекцию, не сеанс или сеанс был закрыт
если я не использовать «используя» заявление в методе «GetUser» он работает. Но я должен вызвать session.Close(), чтобы освободить ресурс
, когда я использую его в веб-страницы, я только хочу, чтобы использовать GetUser(), а не ISession object.so мой вопрос: Означает ли это, что у меня должен быть объект ISession (для освобождения resouse) на моей веб-странице? или любое лучшее решение? (потому что я не хочу, чтобы объект ISession появляется в моих файлах aspx.cs)
спасибо!
Извините, но это плохая консультация. Таким образом, вы одновременно уничтожаете ленивую загрузку и транзакционную изоляцию, в то же время взрывая код множеством мусора. –