Почему один запрос на соединение выполняется дважды при использовании синтаксиса nhibernate LINQ? - PullRequest
1 голос
/ 29 декабря 2010

Я только что перешел на nhibernate 3 с использованием синтаксиса LINQ.Теперь у меня есть следующий код:

IEnumerable<Team> team = Session.Query<Team>().Fetch(r=>r.Country);

, поэтому он выполнит предварительное соединение (так как мне нужны эти дочерние объекты для каждой записи.

Он выполняет запрос на соединение, но я вытащил этов профилировщике nhibernate и оказывается, что он выполняет запрос дважды (тот же самый точный запрос).

Это ошибка в новой версии nhibernate или есть что-то, что я делаю неправильно?

Кроме того, любые предложения о дополнительных способах отладки, чтобы понять, почему это происходит.

1 Ответ

3 голосов
/ 30 декабря 2010

Это не имеет никакого отношения к Fetch или соединениям.

Вы назначаете команду IQueryable. Поэтому каждый раз, когда вы его перечисляете (повторяете, получаете счет и т. Д.), Он выполняет запрос.

Чтобы избежать этого, добавьте .ToList() к вызову, чтобы он выполнялся и преобразовывался в список в памяти.

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