Использование EF 4.0 с обновлением 4.1 для POCO / code-first.
ОК, поэтому у меня есть модель домена, в которой тип Car
имеет в коллекции несколько объектов типа Part
. Итак, отношение один: много.
HasMany(v => v.Parts)
.WithRequired()
.HasForeignKey(v => v.CarId)
.WillCascadeOnDelete();
Проблема в том, что мне нужно добавить свойство CarId
к моему типу Part
. Это утечка деталей ORM в мою модель предметной области - что плохо. Маркировка всего виртуального достаточно раздражает.
Глядя на XML-комментарий к документу для метода HasForeignKey()
, можно сказать следующее:
Конфигурирует отношения для использования
свойства внешнего ключа, которые
выставлены в объектной модели. Если
свойства внешнего ключа не
подвергается в объектной модели, а затем использовать
Метод карты.
Отлично и все. Но это вводит ловушку 22, потому что, если я произвожу рефакторинг своего типа Part
, удаляя ненужное мне свойство CarId
, и обновлю свой построитель моделей EF, чтобы не беспокоить сопоставление этого свойства. Тогда, как вы можете себе представить, это означает, что я не могу тогда позвонить HasKey()
для определения составного ключа, ala:
HasKey(v => new { v.CarId, v.PartId });
HasKey()
, по-видимому, не поддерживает определение ключей на основе лямбда-нели-Собственности.
Какое здесь решение?