我为我的项目使用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文件)
感谢!
对不起,但这是一个坏建议。通过这种方式,您可以同时销毁惰性加载和事务隔离,同时用大量垃圾炸毁代码。 – 2009-11-03 13:26:00