2011-08-23 12 views
2

Entity Framework(MySQL/Connector)を介して外部キー関係を持つオブジェクトを削除しようとしています。MySQL + Entity Framework:オブジェクトを削除できません

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(); 

..しかし、私はこれを行うとき、私は次のエラーを取得する:

The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted.

は、私は、これは私の葉どこ本当にわかりません。最初にEmailAddressオブジェクトを削除する必要がありますか?私たちはカスケードをオンにすることには注意していますが、これは外来キーを整理するために必要なものです。

stub.FkClientEmailAddresses.Clear(); 

関係を削除しません:

答えて

2

問題は、これがあることです。関連するエンティティのFKのみをnullに設定します。 - 期待

  • 正しくセットアップカスケードとしてClear作業が両方EDMXに削除でしょう

    • identifying relationshipから
    • 変更の関係を設定し、そのオブジェクトにRemoveを呼び出すことによって、それらを削除します。必要であれば、それらは本当にあなたがどちらかでなければなりませんを削除しますデータベースを参照していて、まったく呼び出しません。
  • +0

    ありがとうございます。カスケーディングが本当に必要かどうかを確かめるために構造を見直すつもりです。 – pierre

    関連する問題