MySQL + Entity Framework:无法删除对象

时间:2011-08-23 11:33:47

标签: mysql entity-framework cascading-deletes

我正在尝试通过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对象?我们担心开启级联,但它看起来越来越像是需要整理外键。

1 个答案:

答案 0 :(得分:2)

问题在于:

stub.FkClientEmailAddresses.Clear();

不会删除关系。它仅将相关实体中的FK设置为​​null。如果你想要它们真的删除你必须:

  • 通过调用对象集
  • 上的Remove删除它们
  • 更改与identifying relationship的关系 - 这将使Clear按预期工作
  • 在EDMX和数据库中正确设置级联删除,并且不要调用Clear