С готовностью загружая объекты в Linq2Sql - PullRequest
0 голосов
/ 03 августа 2010

Я пытаюсь загрузить сущность и связанные с ней свойства (от одного до многих), используя LoadWith и AssociateWith DataLoadOptions. Однако, посмотрев на сгенерированный SQL, я заметил, что все операторы, сгенерированные LoadWith, являются левыми внешними объединениями.

Таким образом, приведенный ниже код генерирует все левые внешние объединения для извлечения данных связанных свойств. Это почему? И есть ли способ заставить LoadWith генерировать внутренние соединения вместо этого. Я знаю, что могу сделать это с помощью простого «соединения Linq», однако мне нравится, насколько чист и прост синтаксис LoadWith. заранее спасибо

dataLoadOptions.LoadWith(Of TCustomer)(Function(c) c.Orders)
dataLoadOptions.LoadWith(Of TOrder)(Function(o) o.Products)
dataLoadOptions.LoadWith(Of TProduct)(Function(p) p.ProductTranslations)
dataLoadOptions.AssociateWith(Of TProduct)(Function(c) c.ProductTranslations.Where(Function(t) t.Language = "En"))

1 Ответ

0 голосов
/ 04 августа 2010

все заказы Клиента, для которых существует перевод на английский язык

dataLoadOptions.AssociateWith<TCustomer>(c => c.Orders
  .Where(o => o.Products
      .SelectMany(p => p.ProductTranslations)
      .Any(pt => pt.Language == "En")
  )
);
...