Использование NHibernate.Linq и получение 2 запросов для простого выбора, почему? - PullRequest
2 голосов
/ 05 августа 2010

так вот код с пропущенными ненужными битами:

public IEnumerable<T> GetByQuery(Expression<Func<T, bool>> filter
{
    try 
    {
        return Session.Linq<T>().Where(filter);
     }
    catch(Exception ex)
    {
        // custom exception handling here
    }
    finally
    {
        CloseSession();
    }
    return null;
}

и пример его вызова выглядит следующим образом:

IEnumerabl<ClientReport> clientReports = 
clientReportRepository.GetByQuery(item => item.ClientId = id);

Так что, как видите, ничего сложногои, будучи вызванным таким образом, мы попадаем в одну таблицу в базе данных без связи с другими таблицамиНо когда у меня есть show_sql = true в конфигурации, он отображает 2 одинаковых запроса.Есть идеи?Спасибо

1 Ответ

2 голосов
/ 05 августа 2010

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

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

...