2011-06-23 9 views
0

STEからコレクション要素を削除する正しい方法は何ですか?現在、私は次のコードを使用します。それが動作するようにセルフトラッキングエンティティ子エンティティを削除する

order.Items[i].MarkAsDeleted(); 
order.Items.RemoveAt(i); 

が見える(とApplyChangesは、私は、コレクションからそれを削除したにも関わらず、エンティティを削除します)。しかし、それは少し醜いように見えます。私はそれが正しいのですか?あるいは、他の方法があるかもしれませんか?

答えて

1

このテキストはMSDNから直接取得される:

MarkAsDeleted方法削除するエンティティの 状態を変化させます。この メソッドは、 の削除対象のエンティティ上のナビゲーション プロパティもクリアします。参照オブジェクトを指す の場合、ナビゲーション プロパティはnullに設定されます。 ナビゲーションプロパティが コレクションを表す場合、Clearメソッドが呼び出されます。 MarkAsDeletedが コレクションの一部であるオブジェクトで呼び出された である場合、そのオブジェクトは コレクションから削除されます。 の各オブジェクトを削除済みとしてマークするには、コレクションのコピーに オブジェクトをマークします。

List<Course> courses = department.Courses.ToList(); 
foreach (var c in courses) 
{ 
    // Mark each course in the department as Deleted. 
    c.MarkAsDeleted(); 
} 

だから、あなたはので、一度それが間違っていません。次 の例のように、コレクションを収集、 呼び出してToArray()またはToListメソッド()メソッド のコピーを取得するには アイテムを削除済みとしてマークするには、すでにコレクションから削除する必要があります。インデックスのアイテムを削除すると、おそらく別のアイテムとのブレーク関係が削除されます。

関連する問題