我是新手,最近在用Linq。根据网上的资料做了一个Nhibernate Linq的查询。
1 using (ISession session = NHibernateHelper.SessionFactory.OpenSession()) 2 { 3 var result = (from s in session.Query<T>() select s); 4 return result; 5 }
然后我在用的时候,写如下代码就会报错:ISession closed!
Repository<User> dao = new Repository<User>(); List<User> query = dao.GetAll().ToList<User>();
int count = query.count<User>();
我查了些资料,但是不是很明白其中的具体原因。
我知道应该是用Linq的话 我using方式去操作session就导致session关闭了,而Linq后续的查询都会使用到session。
我想知道我这样子想对不对,如果是这样的话,我想问几个问题:
1.使用Linq就会老是去查询数据库?
2.如果我用Linq,那么Nhibernate的session该怎么去控制,总不能一直不close。
关于这点 我知道在web状态下的话,就把session的控制交给每个request,reques结束后就关掉了。但是非web项目的话该怎么弄?
using 只是完成时调用 Dispose()方法。 从你报错来看 你的Session没有Open() 你看一下你的数据层的代码。。看是不是那里有遗漏、、、、
但是我把using去掉的话,就一切正常了
@笋干: 如果说去掉Using 那肯定跟Dispose()方法 或者Close() 方法。在关闭Session时可能有问题。。
不知道你的缓存是怎么配置的
请问缓存配置怎么弄?这个还没概念