我正在尝试通过Entity Framework(MySQL / Connector)删除具有外键关系的对象。
ClientAccount >>> ClientEmailAddresses
foreach (ClientAccount client in recsClientStore.Deleted) {
ClientAccount stub = new ClientAccount();
stub.Id = client.Id;
this.DBContext.AttachTo("ClientAccounts", stub);
stub.FkClientEmailAddresses.Clear();
this.DBContext.DeleteObject(stub);
}
this.DBContext.SaveChanges();
..但是当我这样做时,我收到以下错误:
操作失败:无法更改关系,因为 一个或多个外键属性是不可为空的。当一个 改变了关系,相关的外键属性是 设置为空值。如果外键不支持空值, 必须定义新的关系,外键属性必须是 分配了另一个非空值,或者不相关的对象必须是 删除。
我不确定这会离开我的地方。我是否必须先删除EmailAddress对象?我们担心开启级联,但它看起来越来越像是需要整理外键。
答案 0 :(得分:2)
问题在于:
stub.FkClientEmailAddresses.Clear();
不会删除关系。它仅将相关实体中的FK设置为null。如果你想要它们真的删除你必须:
Remove
删除它们
Clear
按预期工作