之间的实际区别是什么?
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 (外键)较不干净,因此更喜欢独立关联。
以下是有关两种类型的关联及其优点和缺点的一些引用: