NHibernate Linq - почему он использует соединение при запросе поля внешнего ключа? - PullRequest
1 голос
/ 09 августа 2010

У меня есть объектная модель, похожая на эту:

public class Foo
{
  public int Id {get;set;}
  public string FooName {get;set;}
}

public class Bar
{
  public int Id {get;set;}
  public Foo Foo {get;set;}
}

Они соответствуют таблицам в базе данных типичным способом «один ко многим».

Использование Linq дляNHibernate для запроса Bars в соответствии со свойством Foo.Id (которое должно просто запрашивать внешний ключ FoodId в таблице Bars) создает SQL с объединением!

Кто-нибудь знает, почему это так?Это стандартное поведение NHibernate?Или что-то связанное с провайдером Linq?Или, может быть, даже FluentNHibernate (который я использую для отображения)?

Спасибо

Дэвид

1 Ответ

1 голос
/ 09 августа 2010

Это поведение вызвано NHibernate.Linq (я полагаю, что это связано с тем, как выражение преобразуется в представление запроса по критерию ICriteria).Насколько я знаю, это невозможно, если использовать Nhibernate.Linq напрямую, но вы можете достичь желаемых результатов, используя HQL или ICriteria напрямую.

...