是否可以在Session.Close之后获取列表,如下所示?
var bundles = session.Linq<Bundle>();
session.Close();
var bs = bundles.ToList();
我收到错误,是否有不同的语法?
答案 0 :(得分:2)
你做不到。会话用于保持与数据库的连接。关闭会话后,您无法访问数据库
答案 1 :(得分:1)
看起来你正在以错误的方式解决这个问题。您需要使用UnitOfWork模式。 INSIDE你的工作单位是你用IQueriable做事的地方。你不能只传递一个IQueriable,因为它依赖于一个ISession。也许您的语法如下所示:
public void DoSomethingWithData()
{
IList<Bundles> qbundles;
using (var uof = new UnitOfWork())
{
IQueriable<Bundle> bundles = uof.Repository<Bundle>().Query();
// just a litte example... replace with whatever
qbundles = bundles.Where(b => b.Qty == 5).ToList()
}
....
}
以下是一些可能让您开始使用此模式的链接:
http://nhforge.org/wikis/patternsandpractices/nhibernate-and-the-unit-of-work-pattern.aspx