Отображение свойства пользовательской коллекции в столбец в EF - PullRequest
0 голосов
/ 11 мая 2018

Мне бы хотелось этот класс:

public class InvertedList<T> : List<T>{
    public bool IsInverted { get; set; }
}

при использовании в сущности следующим образом:

public class Parent {
    public InvertedList<Child> Children { get; set; }
}

для отображения в таблицы базы данных, такие как

CREATE TABLE Parent (
    Child_IsInverted bit
);

CREATE TABLE Child (
    ParentId int
)

Я пытался поместить [Column] в свойство IsInverted, [ComplexType] в класс InvertedList, но свойство всегда игнорируется.

Есть ли способ сделать что-то подобное или что-то подобное? Конечно, я могу сделать это вручную, как

public class Parent {
    public bool Child_IsInverted { get; set; }
    public List<Child> Children { get; set; }
}

Но мне действительно не нравится помещать все эти свойства Child_IsInverted (у меня будет довольно много таких обратимых списков) в родительскую сущность. Единственный способ, которым я могу придумать, по крайней мере частично реализовать это, - это иметь отдельные модели предметной области и базы данных и преобразовать их с помощью репозитория - таким образом, я мог бы работать, используя желаемую модель, но это выглядит как слишком большое усилие для такая задача. Можете ли вы предложить какие-либо другие варианты?

1 Ответ

0 голосов
/ 13 мая 2018

Когда EF десериализует список <> (все, что реализует ICollection <>), он не сериализует другие свойства, кроме содержимого.

Это всего лишь предположение, что типы Compex, которые могут быть опцией, не поддерживают универсальные шаблоны и не поддерживают свойства навигации, и у вас есть оба варианта.

...