55

实际上有什么区别:

this.HasRequired(a => a.Something)
    .WithMany()
    .Map(a => a.MapKey("SomethingId"));

this.HasRequired(a => a.Something)
    .WithMany()
    .HasForeignKey(a => a.SomethingId);
4

1 回答 1

87

两种映射都将创建完全相同的数据库模式,具有不可为空的外键SomethingId和两个相关表之间的引用约束。

MapKey当您不想将外键作为模型类中的属性时,使用第一个映射。这种情况下的关联类型称为Independent AssociationHasForeignKey当外键是模型中的属性时,您将应用第二个映射。这种类型称为外键关联

在许多情况下,使用外键关联更容易,但许多人认为在对象世界中拥有一个关系工件(外键)不太干净,因此更喜欢独立关联。

以下是有关这两种关联及其优缺点的一些参考资料:

于 2013-03-24T13:07:09.940 回答