我正在试图确定EF6告诉我什么,这对我来说没有多大意义,所以我希望有人在这里澄清一下 .
我正在设置我的FluentApi(在DB中使用的复合键,这是来自数据库的Code First):
modelBuilder.Entity<Object1>()
.HasKey(e => new { e.Property1, e.Property2 }
.HasMany(e => e.Object2s)
.WithRequired(e => e.Object1)
.HasForeignKey(e => new { e.Property1, e.Property2 });
modelBuilder.Entity<Object2>()
.HasKey(e => new { e.Property2, e.Property3, e.Property1 })
.HasRequired(e => e.Object1)
.WithMany(e => e.Object2s)
.HasForeignKey(e => new { e.Property1, e.Property2 });
所有构建都很好,但当我去选择任何东西时,我得到这个:
“表Object2(Property2,Property1)中的外键约束'Object1_Object2'到表Object1(Property1,Property2)::映射不足:外键必须映射到概念方参与外键关联的某些AssociationSet或EntitySets . “
想法?当我在FluentApi中定义了正确的顺序时,我不明白为什么FK约束以错误的顺序显示Object2的FK .
2 回答
尝试属性:
这最终是我必须做的 - 设置外键属性,并指定列顺序 . DB中的Code First具有Order = 2和Order = 0,因此我将其更改为:
我从Object1和Object2中删除了与此外键排列有关的FluentApi,并且一切都很好 . 一旦我确定如何在FluentApi中设置列顺序,我就会在FluentApi中重新执行此操作 .
然后我必须将此添加到我的T4文件中以获取此对象...最终目标是能够在任何时候将DB重新生成到Code First而没有问题:)感谢所有人的帮助!