首页新闻找找看学习计划

关于Nhibernate Linq Query的问题

0
悬赏园豆:50 [已解决问题] 解决于 2012-12-06 17:02

我是新手,最近在用Linq。根据网上的资料做了一个Nhibernate Linq的查询。

View Code
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项目的话该怎么弄?

笋干的主页 笋干 | 初学一级 | 园豆:76
提问于:2012-11-13 13:08
< >
分享
最佳答案
0

using 只是完成时调用 Dispose()方法。 从你报错来看  你的Session没有Open()  你看一下你的数据层的代码。。看是不是那里有遗漏、、、、

收获园豆:50
在 水 一 方 | 小虾三级 |园豆:1097 | 2012-11-16 16:04

但是我把using去掉的话,就一切正常了

笋干 | 园豆:76 (初学一级) | 2012-11-19 09:57

@笋干: 如果说去掉Using  那肯定跟Dispose()方法 或者Close() 方法。在关闭Session时可能有问题。。

在 水 一 方 | 园豆:1097 (小虾三级) | 2012-11-19 14:16
其他回答(2)
0

不知道你的缓存是怎么配置的

panmin | 园豆:268 (菜鸟二级) | 2012-11-13 17:21

请问缓存配置怎么弄?这个还没概念

支持(0) 反对(0) 笋干 | 园豆:76 (初学一级) | 2012-11-19 09:56
0

这个查询是为空的。因为并不是当时就把查询的结果集给返回出来,而是查询了 到用的时候才去查询的。所以返回的是null.

````` | 园豆:14268 (专家六级) | 2012-12-03 12:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册