У меня проблема с пониманием сложных типов данных и сущностей в ASP MVC и C#. Я начал с создания следующего типа, который не предназначен для объекта (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, удалив интерфейс, переместив класс в другое пространство имен и добавив методы в класс. Внезапно, когда вы пытались перестроить базу данных, она неожиданно интерпретировалась как тип сущности, тем самым бросая исключение для отсутствия первичного ключа.
Какая система? Когда классы рассматриваются как сложные типы и когда они рассматриваются как сущности?
Вместо того, чтобы изменять период, попробовали ли вы создать дочерний класс Периода с реализацией или сделать период неполным классом и поставить реализацию в другом частичном месте где-нибудь еще? – qJake
Я, конечно, не знаю, что происходит за кулисами с генератором модели Entity, хотя у меня есть некоторый опыт с подобными проблемами. В моделях есть файлы ресурсов, в которых они определяют сопоставление объектов с таблицами. Автоматический генератор модели сделал неправильный вывод (он пытается сопоставить Period с некоторой таблицей или создать ее, если она не существует), которую вам придется исправлять вручную в одном из файлов ресурсов. – evanmcdonnal