Возможно ли получить NHibernate для выполнения запросов как EF? - PullRequest
0 голосов
/ 08 декабря 2011

Можно ли в любом случае использовать NHibernate таким образом, чтобы он мог выполнять запрос / запросы только после использования возвращенного объекта запроса / оператора ... точно так же, как EF делает это?

Для большинства случаев с EF он не отправит и не выполнит фактический запрос к базе данных, пока не будет использован возвращенный объект linq- «оператора» .. например:

var x = for e in entities.MyTable
select e;

Этот еще не выполнен!
Что означает, что я могу mofidy x-объектов "linq-query", однако мне нравится без фактического "извлечения" каких-либо данных из базы данных:

x = x.Where(i=>i.SomeThing = someThing);

Все еще не выполнено!

x.ToList<MyTable>()

Теперь он выполнен!

Но в NHibernate запрос выполняется, как только транзакция закрывается или фиксируется из того, что я понял ... и в большинстве случаев это уже делается в хранилище.Таким образом, вы не можете просто в любом другом месте изменить запрос и затем отправить его в базу данных.Потому что запрос уже отправлен, и это может означать, что вы позже только измените то, что «отображается» из результата.

Возможно, я неправильно понял это, поэтому, пожалуйста, исправьте меня, если я ошибаюсь.

Огромное спасибо заранее!

1 Ответ

0 голосов
/ 08 декабря 2011

Вы можете попробовать что-то подобное, используя отдельный QueryOver

var query = QueryOver.Of<Customer>()
    .Where(x => x.LastName == "Smith"); // query is not executed yet

query.GetExecutableQueryOver(session).List();

Хорошо, что вы можете передавать объекты QueryOver и запускать их где-то еще.

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