如何覆盖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
。
对此有何帮助?
谢谢!
答案 0 :(得分:2)
首先:升级到EF 4.1 RTW。 CTP 5已经过时,可能包含许多现在已修复的错误。
如果您完成了升级,则以下内容应该有效:
modelBuilder.Entity<SomeEntity>()
.HasOptional(m => m.Parent)
.WithMany()
.Map(c => c.MapKey("Entity_Id"));