1

私は次のクラスを持っています

public class ObjectA{
   private List<ObjectB> list;    
}

ObjectAObjectBN:N の関係にあります。

リレーションのみを削除したいので使用します

 while (objectA.list.Any())
        objectA.list.Remove(objectA.list.First());
  • リストは関係テーブルのものです -

    List<ObjectAobjectB>
    

そして、私は得る

操作に失敗しました: 1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした。リレーションシップに変更が加えられると、関連する外部キー プロパティが null 値に設定されます。外部キーが null 値をサポートしていない場合は、新しい関係を定義するか、外部キー プロパティに別の非 null 値を割り当てるか、関連のないオブジェクトを削除する必要があります。

編集:モデル定義の更新 モデル
には 3 つのテーブルがあります:
* ClassA - SchemaA、
* ClassAClassB - SchemaA、
* ClassB - SchemaB、

私のコンテキスト (および edmx ) には、スキーマ A ( ClassA および ClassAClassB) しかありません
。関係テーブルに対して 1:N です。

edmx から生成されたコードを次に示します。

public partial class ClassA:DomainEntity
{
    ....
    public virtual ICollection<ClassB>  ClassAClassB { get; set; }
}

私は何を間違っていますか?

ありがとう。

4

1 に答える 1

1

Null 非許容 FK との 1 対多の関係がある場合は、ObjectB も削除する必要があります。これは、ナビゲーション プロパティから削除すると関係が削除される (FK が null になる) だけで、ObjectB 自体は削除されないためです。これを試して:

 while (objectA.list.Any()) {
     var b = b;
     objectA.list.Remove(b);
     entities.DeleteObject(b);    
 }
于 2013-01-17T10:58:44.967 に答える