EFを使用してオブジェクト(およびその子オブジェクト)を削除する最適な方法は何ですか?私は削除するオブジェクトのIDだけを渡し、EFがその従属データ(外部キーのデータ)を削除するようにしたいと思います。 idに基づいて最初にオブジェクトを取得してから "DeleteObject"を呼び出す必要がありますか?Entity Framework DeleteObject子
2
A
答えて
8
カスケードがデータベースに設定されている場合は、原則を削除するだけで十分です。
あなたはこのようにスタブエンティティを使用して削除する事をGETするために、データベースへの問い合わせなしにこれを行うことができます。もちろん
var stub = new Principal{ID = idToDelete};
ctx.AttachTo("PrincipalsEntitySetName", stub);
ctx.DeleteObject(stub);
に使用参照またはフィールドがある場合、これは全体的な話ではありません並行性チェックでもそれらが必要になります。
あなただけのモデルでカスケードを削除する必要があり一方場合(つまり、データベースにはカスケードはありません)あなたは、第1のメモリにALL扶養を取得する必要があり、その後、削除を呼び出します:
var stub = new Principal{ID = idToDelete};
ctx.AttachTo("PrincipalsEntitySetName", stub);
stub.Dependendents.Load();
ctx.DeleteObject(stub);
これは、EFが(予想される)冗長削除を実行して、ObjectContextをデータベース内で発生すると予想されるものと同期させて保持するためにのみ機能します。
希望これは私が私のMSDNのブログにこのトピックに関するいくつかのtipsを持っている
アレックス
関連する問題
- 1. Entity FrameworkのDeleteObjectをオーバーライドする方法
- 2. Entity Framework 4.1にDeleteObjectメソッドがありません
- 3. Entity Framework - 既定の子オブジェクト
- 4. Entity Frameworkの5 - 削除する子レコード
- 5. Entity Frameworkのロードエラー
- 6. Entity Frameworkジェネリックリポジトリエラー
- 7. Entity Framework 4リポジトリ?
- 8. Entity FrameworkのSQLException
- 9. Entity Framework How
- 10. C#Entity Framework 4.3
- 11. Entity Frameworkの5
- 12. Entity Framework - コードファーストフルエントAPI:ErrorMessage?
- 13. Entity Framework 4.0セルフトラッキングロードナビゲーションプロパティ
- 14. Entity Frameworkの
- 15. Mocking Entity Framework Context
- 16. Entity Framework + POCO
- 17. Entity Frameworkのは
- 18. Entity Frameworkのコードファーストソフト
- 19. Entity Frameworkの&
- 20. Entity Frameworkのモデルチェンジエラー
- 21. Entity Frameworkの
- 22. デバッグコードファーストEntity Frameworkマイグレーションコード
- 23. Entity Framework - Reflection
- 24. Entity Frameworkのジェネリックリポジトリ
- 25. Entity Frameworkの - SkipWhile
- 26. Entity FrameworkリリースDemystified
- 27. Entity Framework、generic List
- 28. Entity Frameworkの
- 29. Entity FrameworkのObjectQuery.Include()
- 30. PostgreSQLとEntity Framework