Модели/сущности против сложных типов

91
8

У меня проблема с пониманием сложных типов данных и сущностей в ASP MVC и С#. Я начал с создания следующего типа, который не предназначен для сущности (таблица DB):


public class Period : IPeriod
{
public DateTime From { get; set; }
public DateTime To { get; set; }
}

Я добавил этот тип к модели:


public class Event
{
public int ID { get; set; }
public string Title { get; set; }
public Period EventTime { get; set; }
}

Все прошло отлично. Казалось, он понимает, что Период является сложным типом, но не сущностью. Он просто добавил столбцы EventTime_From и EventTime_To в таблицу Event.


Однако затем я добавил некоторую сложность в тип Period, удалив интерфейс, переместив класс в другое пространство имен и добавив методы в класс. Внезапно, когда вы пытались перестроить базу данных, она неожиданно интерпретировалась как тип сущности, тем самым бросая исключение для отсутствия первичного ключа.


Какая здесь система? Когда классы рассматриваются как сложные типы и когда они рассматриваются как сущности?

спросил(а) 2021-01-19T11:19:07+03:00 9 месяцев, 1 неделя назад
1
Решение
79

Трудно сказать, что именно происходит, не зная все сделанные вами изменения, но вы всегда можете явно сказать EF, что Period является сложным типом, либо маркируя его атрибутом ComplexType, либо используя свободное отображение:

modelBuilder.ComplexType<Period>();

ответил(а) 2021-01-19T11:19:07+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема