EF4 CTP5 - 多列到一列重命名

时间:2011-04-13 21:44:42

标签: c# linq entity-framework-4

如何覆盖EF4中外键列的默认约定以指定其他列名?

例如,我有一个实体,其中一个名为Parent的属性引用了同一类型的其他属性。

EF4尝试通过查找名为EntityId的外键来解析关系,但在我的数据库架构中它是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 个答案:

答案 0 :(得分:2)

首先:升级到EF 4.1 RTW。 CTP 5已经过时,可能包含许多现在已修复的错误。

如果您完成了升级,则以下内容应该有效:

modelBuilder.Entity<SomeEntity>()
    .HasOptional(m => m.Parent)
    .WithMany()
    .Map(c => c.MapKey("Entity_Id"));