Nhibernate-Linq: Как я могу использовать список Iqueryable после закрытия сессии? - PullRequest
1 голос
/ 26 октября 2009

Можно ли получить список после Session.Close, как показано ниже?

var bundles = session.Linq<Bundle>();
session.Close();
var bs = bundles.ToList();

Я получаю ошибку, есть ли другой синтаксис для этого?

Ответы [ 2 ]

2 голосов
/ 26 октября 2009

Вы не можете. Сессия используется для удержания соединения с базой данных. После закрытия сеанса вы не можете получить доступ к БД

1 голос
/ 26 октября 2009

Похоже, вы делаете это неправильно. Вам нужно использовать шаблон 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...