#c# #linq #entity-framework-4
#c# #linq #entity-framework-4
Вопрос:
Как мне переопределить соглашение по умолчанию для столбца внешнего ключа в EF4, чтобы указать другое имя столбца?
Например, у меня есть один объект со свойством Parent, которое ссылается на другой объект того же типа.
EF4 пытается разрешить связь, ища внешний ключ с именем EntityId, но в моей схеме DB это Entity_Id. Как мне сообщить EF, что имя столбца FK не является EntityId?
Я пробовал следующее:
modelBuilder.Entity<SomeEntity>()
.HasOptional(m => m.Parent)
.WithMany()
.IsIndependent()
.Map(m => m.MapKey(k => k.Id, "Entity_Id")));
Но я получаю исключение, в котором говорится: Sequence contains more than one matching element
.
Любая помощь по этому поводу?
Спасибо!
Ответ №1:
Сначала: обновление до EF 4.1 RTW. CTP 5 устарел и содержит потенциально много ошибок, которые сейчас исправлены.
Если вы выполнили обновление, должно сработать следующее:
modelBuilder.Entity<SomeEntity>()
.HasOptional(m => m.Parent)
.WithMany()
.Map(c => c.MapKey("Entity_Id"));