コレクション要素をSTEから削除する正しい方法は何ですか? 現在、次のコードを使用しています。
order.Items[i].MarkAsDeleted();
order.Items.RemoveAt(i);
動作しているように見えます (コレクションからエンティティを削除したにもかかわらず、ApplyChanges はエンティティを削除します)。しかし、それは少し醜く見えます。私はそれを正しくやっていますか?それとも他の方法があるのでしょうか?
コレクション要素をSTEから削除する正しい方法は何ですか? 現在、次のコードを使用しています。
order.Items[i].MarkAsDeleted();
order.Items.RemoveAt(i);
動作しているように見えます (コレクションからエンティティを削除したにもかかわらず、ApplyChanges はエンティティを削除します)。しかし、それは少し醜く見えます。私はそれを正しくやっていますか?それとも他の方法があるのでしょうか?
このテキストは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
アイテムを削除済みとしてマークすると、コレクションからすでに削除されているはずなので、インデックスでアイテムを削除すると、おそらく別のアイテムとのブレーク関係が削除されるため、間違ったことはありません。