EF4 CTP5 — Переименование многих в один столбец

#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"));