实际上有什么区别:
this.HasRequired(a => a.Something)
.WithMany()
.Map(a => a.MapKey("SomethingId"));
和
this.HasRequired(a => a.Something)
.WithMany()
.HasForeignKey(a => a.SomethingId);
答案 0 :(得分:82)
两个映射都将使用不可为空的外键SomethingId
和两个相关表之间的引用约束创建完全相同的数据库模式。
当您不希望将外键作为模型类中的属性时,将使用MapKey
的第一个映射。在这种情况下,关联类型称为独立关联。当外键是模型中的属性时,您将使用HasForeignKey
应用第二个映射。此类型称为外键关联。
在许多情况下,使用外键关联更容易,但很多人认为在对象世界中使用关系工件(外键)并因此更不干净。因此更喜欢独立关联。
以下是关于两种类型的关联及其优点和缺点的一些参考文献: