实体框架级联删除不起作用

时间:2014-05-14 20:23:58

标签: c# asp.net-mvc-3 entity-framework entity-framework-4

我有两个共享一对多关系的表AgentTransmissionClearinghousePartners。每个AgentTransmission记录都可以作为许多ClearinhouseParnters的主体。

这是通过List模型中的AgentTransmission对象表示的。

我已将OnDelete财产发送给" Cascade"在.edmx文件中,但是当我尝试删除AgentTransmission对象时,我收到此错误。

The DELETE statement conflicted with the REFERENCE constraint
 \"FK_ClearinghousePartners_AgentTransmission\". The conflict
 occurred in database \"AgentResourcesU01\", table 
\"dbo.ClearinghousePartners\", column 'AgtTransId'.\r\nThe
 statement has been terminated.

AgentTransmission

这包含一小部分字段,因此我将其缩减为只与那些关系相关的字段

public partial class AgentTransmission
{
    public int ID { get; set; } //PK
    .
    .
    public virtual List<ClearinghousePartners> ClearinghousePartners { get; set; }
}

商标信息交换机构合作伙伴

public partial class ClearinghousePartners
{
    public int Id { get; set; } 
    public string ClearingHouseName { get; set; }
    public string TradingPartnerName { get; set; }
    public Nullable<System.DateTime> StartDate { get; set; }
    public int AgtTransId { get; set; } //FK

    public virtual AgentTransmission AgentTransmission { get; set; }
}

控制器

这里没什么了不起的,只是做了正常的删除。希望EF删除ClearinghousePartners对象的List AgentTransmission属性中的所有对象..我相信它能够做到(虽然我可能错了)

//Cascade deletes set to remove ClearinghousePartners
db.AgentTransmission.Remove(agenttransmission);
db.SaveChanges(); //Exception thrown here

EDMX

enter image description here

2 个答案:

答案 0 :(得分:2)

on delete设置需要映射到数据库。您是否从edmx模型更新了数据库?

答案 1 :(得分:0)

如果您使用的是数据库优先方法,则还需要确保在数据库中配置级联删除。