如何使用实体框架从数据库中删除记录时解决冲突?

时间:2013-10-08 10:30:23

标签: sql-server entity-framework

  

DELETE语句与REFERENCE约束冲突> “FK_dbo.VendorDocuments_dbo.VendorModels_VendorId”。发生在数据库中的冲突> “aegisv”,表“dbo.VendorDocuments”,列'VendorId'。   声明已经终止。

意味着我有一个VendorModel表,其中包含invoicedocument列表(它是具有表供应商模型的外键vendorId的模型)。当我试图从数据库中删除供应商模型时,我正在超越异常。

我尝试了各种各样的东西,但我还没有解决。

添加了以下代码,但没有效果。

      modelBuilder.Entity<VendorDocument>()
            .HasRequired(x => x.VendorModel)
            .WithMany(u => u.VendorDocumemts)
            .WillCascadeOnDelete();

请任何人帮助我..谢谢。

2 个答案:

答案 0 :(得分:0)

只需更改一点代码,试试吧: -

 modelBuilder.Entity<VendorDocument>()
            .HasOptional(j => j.VendorModel)
            .WithMany(u => u.VendorDocumemts)
            .WillCascadeOnDelete(true);

答案 1 :(得分:0)

您还必须在数据库上启用级联删除规则。 EF不对在数据库中级联删除负责。

EF负责SaveChanges()之后ObjectContext的正确性。因此,EF尝试将ObjectContext与数据库中预期的级联之后的预期数据库状态同步。

因此,如果您在模型中创建了级联删除规则,则必须在数据库中配置级联删除规则。 Tip 33

在数据库中启用级联删除规则 - Enable CascadeDelete