Невозможно наследовать свойства пользовательских типов в Code-First - PullRequest
0 голосов
/ 28 июля 2011

Я работаю над созданием модели новой сущности.

Я определил несколько повторяющихся свойств (столбцов), которые, естественно, должны наследоваться, например, Id, CreatedBy, CreatedAt и т. Д.

СейчасЯ создал базовый класс для этой проблемы, и все работает нормально, пока я не определю свойства пользовательских типов в базовом классе, например: public User CreatedBy {get; set;}

при запуске приложения выдается исключение EngineExecutionException.

Если я опускаю public User CreatedBy {get;set;} и оставьте только свойства int, string, DateTime, все в порядке, и я вижу, как это отражается при создании БД.

В чем моя ошибка?

Ответы [ 2 ]

0 голосов
/ 15 января 2012

Если UserID является ключом к таблице User (скажем, int), то у вас будет

public int UserID { get; set; }
public virtual User CreatedBy { get; set; }

Свойство UserID является прямой ссылкой на поле в таблице.Свойство CreatedBy является ссылкой на объект User, который будет представлять таблицу User.Как уже упоминалось ранее, виртуальное ключевое слово используется для отложенной загрузки объекта User.

Свойство UserID соответствует первичному ключу таблицы и объекта User.Есть способы сопоставить их, если они не названы одинаково, но проще всего, если они есть.Если вы можете дать больше информации о CreatedBy, такой как тип, как он представлен в базе данных и т. Д., Я могу дать более конкретный ответ на ваши настройки.

* отредактировано для форматирования.

0 голосов
/ 28 июля 2011

Я думаю, что ваша собственность должна быть виртуальной, что означает, что это свойство является внешним ключом.

...