代码之家  ›  专栏  ›  技术社区  ›  parliament

MapKey与HasForeignKey的差异-Fluent Api

  •  56
  • parliament  · 技术社区  · 12 年前

    以下两者的实际区别是什么:

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

    this.HasRequired(a => a.Something)
        .WithMany()
        .HasForeignKey(a => a.SomethingId);
    
    1 回复  |  直到 12 年前
        1
  •  88
  •   Community CDub    8 年前

    这两个映射将创建完全相同的数据库架构,其中包含不可为null的外键 SomethingId 以及两个相关表之间的引用约束。

    第一次映射 MapKey 当您不希望将外键作为模型类中的属性时使用。这种情况下的关联类型称为 独立协会 。您可以使用 HasForeignKey 当外键是模型中的属性时。这种类型被称为 外国密钥协会 .

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

    以下是关于这两种类型的协会及其优点和缺点的一些参考资料: