Яркая загрузка объектов в Linq2Sql
Я пытаюсь с нетерпением загрузить объект и связанные с ним свойства (базовые для многих) с помощью LoadWith и AssociateWith DataLoadOptions. Однако, посмотрев на сгенерированный SQL, я заметил, что операторы, созданные LoadWith, - это все внешние соединения слева.
Таким образом, приведенный ниже код генерирует все левые внешние соединения для извлечения данных связанных свойств. Почему это? И есть ли способ получить LoadWith для создания внутренних соединений. Я знаю, что могу сделать это с помощью простого «Linq join», однако мне нравится, насколько чистый и простой синтаксис 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"))
Почему вы хотите внутренние соединения. Кажется довольно разумным, что LINQ to SQL генерирует внешние соединения, потому что с внутренними соединениями клиент, который не имеет заказов, не будет получен. Возможно, вам следует объяснить, чего вы хотите достичь. – Steven
Да, извините, я должен был быть более ясным. Я хочу вернуть все заказы клиента, для которых существует перевод на английский язык. Что касается внешних объединений, я думаю, что Linq должен позволить мне явно построить либо внешнее, либо внутреннее соединение. Извините Если это еще не ясно. – Buzzer