Можно ли получить список после Session.Close, как показано ниже?
var bundles = session.Linq<Bundle>(); session.Close(); var bs = bundles.ToList();
Я получаю ошибку, есть ли другой синтаксис для этого?
Вы не можете. Сессия используется для удержания соединения с базой данных. После закрытия сеанса вы не можете получить доступ к БД
Похоже, вы делаете это неправильно. Вам нужно использовать шаблон UnitOfWork. ВНУТРИ вы единица работы, где вы делаете вещи с вашим 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://web.archive.org/web/20090803155753/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/04/10/nhibernate-and-the-unit-of-work-pattern.aspx
http://nhforge.org/wikis/patternsandpractices/nhibernate-and-the-unit-of-work-pattern.aspx