私は、ビデオRepository Pattern with C# and Entity Framework, Done RightとAspnet Boilerplateのようなリポジトリパターンに関する良い出典を見てきました。私はリポジトリに作業単位の責任であるデータをコミットするロジックがあってはならないことを知っています。 しかし、あなたが親、その子どものすべてを読んで削除する必要があるかもしれないので、子どもと親レコードの削除を行う太りすぎのようです。このような実装の例は、同じビデオ内のEntity Frameworkを使用して確認できます。deleting authors and course。 Aspnetボイラープレートはa implementation to delete with a primary key, which read the entity before deleting tooです。 ですから、私は質問します。削除コマンドを使用してパターンを尊重することはできますか?そこに良い例はありますか?削除はリポジトリパターンで最初に読み取る必要がありますか?
答えて
リクエストごとに1つのContextを注入するか、この場合は1つの作業ユニットを注入すると、これはどのように問題になるかわかりません。あなたはORMを使用する場合は、その上に、1回の以下の読み取りを行う。この方法は、MediatRのようなコンポーネントを見てみましょう
var product = new Product { Id = productId };
db.Entry(product).State = System.Data.Entity.EntityState.Deleted;
db.SaveChanges();
、なぜyou don't even need a repository:、その子のためのようなものをカスケードを設定します。
DbContextを使用すると、リポジトリのニーズを満たすことができると主張する人がいます。私はMoshからこのビデオを勉強していましたが、DbContextが良い解決策ではないことを示しています:https://youtu.be/rtXpYpZdOzM?t=5m3s とにかく、私の質問にはまだ同じ問題があります: Repository 、私はいつも削除の前に実体を読む必要がありますか?どのように私は削除コマンドを使用することができますので、私はデータベースに一度だけ行くでしょうか? あなたの解決策は、子供の読書を避けるのは良いことですが、依然として親を読むことです。 – mqueirozcorreia
私の解決策は親を読んでいない、それは既に存在するもののIDを持つ親のインスタンスをニュースし、効率の点でSaveChangesで削除する、他の方法はない、再びベストプラクティスではないあなたがそれを必要としないときにデザインパターンを使用しますが、作業ユニットの目的は、作業パターンの単位の実装であるdbコンテキストですでに持っているアトミックトランザクションを持つことです。 –
ありがとう!ニースのソリューションといくつかの人々がここに例をあげました http://stackoverflow.com/a/37802938/3424212 – mqueirozcorreia
- 1. dismissModalViewControllerAnimatedはスーパービューから削除する前に最初にアニメーション化する必要がありますか?
- 2. JavaScriptからテキストファイルを読み取る必要があります
- 3. Isotop垂直タブは読み込み時に最初の項目を表示する必要があります
- 4. 静的ベクトルは削除する必要がありますか?
- 5. GLSurfaceViewでテクスチャを削除する必要がありますか?
- 6. MQTTメッセージを最初のサブスクライバが読み取った後に削除します
- 7. deinitでUIGestureRecognizerを削除する必要はありますか?
- 8. NSObjectでオブザーバを削除する必要はありますか?
- 9. 最後のwhileループからコンマを削除する必要があります
- 10. イベントハンドラを削除する必要がありますか?
- 11. Elasticsearchエイリアスを削除する必要がありますか?
- 12. 仮想インデックスを削除する必要がありますか?
- 13. OOP - 投稿を削除する必要がありますか?
- 14. System.Windows.Media.Penを削除する必要がありますか?
- 15. ラムダを削除する必要がありますか?
- 16. QUpdSocketsを削除する必要がありますか?
- 17. ウェブサイトからプリローダーを削除する必要があります
- 18. CameraCaptureUIからStorageFileを削除する必要があります
- 19. 不要なスペースエレメントを削除する必要があります
- 20. アプリは最初にデフォルト言語で始める必要がありますか?
- 21. すぐに削除する必要があります
- 22. Android Studioでキャッシュを削除する必要があります
- 23. 子コンテキストを削除する必要はありますか?
- 24. TDDテストは常に最初に失敗する必要がありますか?
- 25. CardViewは常にレイアウトを最初にラップする必要がありますか?
- 26. xmlファイルの最初と最後の文字を削除する=見積もりを削除する必要があります
- 27. ファイルから文字列とDoubleを読み取る必要があります
- 28. Firebaseリスナーは常に削除する必要がありますか?
- 29. application.propertiesからの読み取り:属性値は定数である必要があります
- 30. 'CREATE VIEW'は、クエリバッチの最初の文である必要があります。
[スタブエンティティ](http://stackoverflow.com/a/28261869/861716)を使用してください。 –