我有两个共享一对多关系的表AgentTransmission
和ClearinghousePartners
。每个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
答案 0 :(得分:2)
on delete设置需要映射到数据库。您是否从edmx模型更新了数据库?
答案 1 :(得分:0)
如果您使用的是数据库优先方法,则还需要确保在数据库中配置级联删除。