在EF模型mvc3中定义外键关系

时间:2012-01-25 15:24:58

标签: sql entity-framework-4 foreign-keys

我在模型级定义外键关系,如下所示:

public class CMShoppingEntities : DbContext
{
  public DbSet<Category> Categories { get; set; }
  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
            modelBuilder.Entity<Category>()
                .HasOptional(c => c.parentCategory)
                .WithMany(c => c.ChildCategories)
                .HasForeignKey(p => p.ParentID);

            base.OnModelCreating(modelBuilder);
  }
}

那么为什么我们需要或者是否需要在数据库/表级定义外键关系..?

1 个答案:

答案 0 :(得分:0)

此映射表示数据库中存在FK关系= EF认为您的数据库使用参照完整性。如果您的数据库不使用它,映射和您的应用程序仍然会工作,直到某人将数据存储在您的数据库中,这将违反此预期约束。然后,由于数据不一致,您的应用程序将随机停止工作。

因此,如果您希望模型中的FK关系也在数据库中使用它。

这个问题还有一些问题:

  • 如果您希望级联删除工作。您必须在数据库中使用引用约束并将其配置为级联删除
  • 只有在使用代码映射时,才能轻松指定数据库中的关系。对于EDMX,您必须手动维护SSDL描述,以便EF仍然认为存在关系