之间的实际区别是什么?

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


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

最佳答案

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

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

在许多情况下,使用外键关联更容易,但是许多人认为在对象世界中具有关系 Artifact (外键)较不干净,因此更喜欢独立关联。

以下是有关两种类型的关联及其优点和缺点的一些引用:

  • http://www.ladislavmrnka.com/2011/05/foreign-key-vs-independent-associations-in-ef-4/
  • What are Independent Associations and Foreign Key Associations?
  • Code First: Independent associations vs. Foreign key associations?
  • 09-26 17:55