0

コレクション要素をSTEから削除する正しい方法は何ですか? 現在、次のコードを使用しています。

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

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

4

1 に答える 1

1

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

MarkAsDeletedメソッドは、エンティティの状態をDeletedに変更します。このメソッドは、削除のマークが付けられているエンティティのナビゲーションプロパティもクリアします。参照オブジェクトを指している場合、ナビゲーションプロパティはnullに設定されます。ナビゲーションプロパティがコレクションを表す場合、Clearメソッドが呼び出されます。コレクションの一部であるオブジェクトに対してMarkAsDeletedが呼び出されると、そのオブジェクトはコレクションから削除されます。コレクション内の各オブジェクトを削除済みとしてマークするには、コレクションのコピー内のオブジェクトをマークします。コレクションのコピーを取得するには、次の例のように、コレクションでToArray()またはToList()メソッドを呼び出します。

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

Itemsアイテムを削除済みとしてマークすると、コレクションからすでに削除されているはずなので、インデックスでアイテムを削除すると、おそらく別のアイテムとのブレーク関係が削除されるため、間違ったことはありません。

于 2011-06-23T07:33:26.957 に答える