Создать проекцию с пустой ICollection в Entity Framework 6? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть несколько объединений, которые я хочу выполнить с EF или без, в зависимости от определенных условий.Я знаю, что могу справиться с этим с помощью анонимных типов в моих проекциях, но, поскольку я хочу добавить дополнительные данные, а также включить все данные из предыдущих запросов и иметь назначения в выражениях if, это будет означать, что я должен объявить переменные IQueryable (ofanon-types), которая кажется большой болью (если это вообще возможно).Таким образом, тип класса является предпочтительным.Проблема, с которой я столкнулся в своем классе, состоит в том, что он содержит одну коллекцию ICollection (и, возможно, еще две в будущем), последнюю (CarEquipment):

Public Class CarFlatRecord
    Public Property Car As Car
    Public Property Make As Make
    Public Property CarEquipment As ICollection(Of CarEquipment) = New List(Of CarEquipment)
End Class

EF требует, чтобы все проекции были равны по порядку и количествупараметров, поэтому я должен назначить что-то для CarEquipment, даже если я хочу, чтобы оно было пустым.До сих пор я ничего не пробовал, / New List (), но продолжал получать различные сообщения об ошибках EF (показано ниже).Есть ли способ присвоить какое-либо пустое значение в выражении, подобном следующему?

dim x= currentContext.Car.
        Join(
            currentContext.Make,
            Function(f) f.MakeId,
            Function(m) m.MakeId,
            Function(left, right) New CarFlatRecord With {.car = f, .make = m, CarEquipment = Nothing}
        )

Я получаю сообщения об ошибках, если я хочу назначить CarEquipment=Nothing:

Невозможно создать нулевое постоянное значение типа 'System.Collections.Generic.ICollection`1 [[Model.CarEquipment, Model, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]] '.В этом контексте поддерживаются только типы сущностей, типы перечисления или типы примитивов.

, если я полностью опускаю CarEquipment в первом назначении, я получаю

Тип 'BusinessLogic.Data.Lookups.CarFlatRecord 'появляется в двух структурно несовместимых инициализациях в рамках одного запроса LINQ to Entities.Тип может быть инициализирован в двух местах одного и того же запроса, но только если в обоих местах установлены одинаковые свойства и эти свойства установлены в одном и том же порядке.

, если я пытаюсь назначить new List(of CarEquipment) Я получаю:

Тип, который реализует IEnumerable 'System.Collections.Generic.List`1 [[Model.CarEquipment, Model, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null]] 'не может быть инициализирован в запросе LINQ to Entities.

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