Можно ли в любом случае использовать NHibernate
таким образом, чтобы он выполнял запрос/запросы только после использования возвращаемого объекта запроса/оператора... так же, как EF
?
В большинстве случаев с EF
он не будет отправлять и выполнять фактический запрос к базе данных до тех пор, пока не будет использован возвращенный объект linq-"оператор".. например:
var x = for e in entities.MyTable
select e;
Это еще не выполнено!
Это означает, что я могу модифицировать x-объекты "linq-query", как мне нравится, без фактического "извлечения" каких-либо данных из базы данных:
x = x.Where(i=>i.SomeThing = someThing);
Еще не казнен!
x.ToList<MyTable>()
Теперь его исполняют!
Но в NHibernate
запрос выполняется, как только транзакция закрывается или фиксируется, как я понял... и в большинстве случаев это уже сделано в репозитории. Таким образом, вы не можете просто в любом другом месте изменить запрос, а затем отправить его в базу данных. Потому что запрос уже отправлен, и это означает, что позже вы можете изменить только то, что «отображается» в результате.
Я, возможно, понял это неправильно, поэтому, пожалуйста, поправьте меня, если я ошибаюсь.
Заранее огромное спасибо!