MapKey与HasForeignKey差异 – Fluent Api
实际上有什么区别:
this.HasRequired(a => a.Something) .WithMany() .Map(a => a.MapKey("SomethingId"));
和
this.HasRequired(a => a.Something) .WithMany() .HasForeignKey(a => a.SomethingId);
这两种映射都将创build完全相同的数据库模式,其中不可空的外键SomethingId
和两个相关表之间的引用约束。
当您不希望将外键作为模型类中的属性时,将使用MapKey
的第一个映射。 这种情况下的关联types被称为独立关联 。 当外键是模型中的属性时,您将使用HasForeignKey
应用第二个映射。 这种types被称为外键协会 。
在许多情况下,使用外键关联更容易,但是许多人认为在对象世界中有一个关系工件(外键)并不那么干净,因此更喜欢独立关联。
下面是关于两种types的协会及其优点和缺点的一些参考文献:
- http://www.ladislavmrnka.com/2011/05/foreign-key-vs-independent-associations-in-ef-4/
- 什么是独立协会和外国关键协会?
- 代码优先:独立协会与外键协会?