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の更新5:6:ObjectStateManager、AddObject、DeleteObject、ExecuteStoreCommandのメンバーでない
- 3. Entity Framework 4.1にDeleteObjectメソッドがありません
- 4. Entity Frameworkのカウント子エンティティは
- 5. Entity Framework - 既定の子オブジェクト
- 6. Entity Frameworkの5 - 削除する子レコード
- 7. Entity Framework LINQクエリ
- 8. Entity Frameworkのロードエラー
- 9. Entity Frameworkのコア:
- 10. Entity Framework
- 11. Entity Frameworkのマッピング
- 12. Entity Frameworkのコードファーストクエリ
- 13. Entity Frameworkのコア
- 14. Entity FrameWorkのダイナミックリストFrameWork WebApi 2.0
- 15. Entity Framework to TreeView MVC
- 16. Entity FrameworkのObjectQuery.Include()
- 17. Entity Frameworkの
- 18. Entity Frameworkコードファーストコレクションマッピング - FriendRequests
- 19. Entity Frameworkの
- 20. Entity Frameworkクエリヘルプ
- 21. Entity Framework 5.0ベンチマークテスト
- 22. Entity Frameworkのは
- 23. Entity Framework - コードファーストフルエントAPI:ErrorMessage?
- 24. Entity Frameworkの
- 25. Entity FrameworkのBulkInsert
- 26. Entity Framework 6メモリリーク
- 27. Entity Frameworkコードファースト&ストアドプロシージャ
- 28. Entity Framework UnintentionalCodeFirstException
- 29. Entity Framework Generic CRUD
- 30. Entity Framework、generic List