次のシナリオで、何がより良い、またはより正しいプラクティスと見なされるのか疑問に思っています。
NHibernateを使用して次のビジネスエンティティをマッピングしました。
- 壁
- WallPost
- WallPostComment
壁には0から多数のWallPostがあります。WallPostには0から多数のWallPostCommentsがあります。集約ルートはWallです。
WallPostCommentをWallPostに追加するタスクを書いています。アプリケーションはMVCアプリケーションであり、新しいWallPostCommentを追加するリクエストには、コメントが属するWallPostのIDが含まれています。コメントを追加するには、追加する必要のある投稿を取得する必要があります。私の質問は:これを行うための最良/最も正しい方法は何ですか?
私はこれまでに2つのアプローチを試しましたが、非効率的ですが、1つはより「正しい」と感じています。別の、より効率的なアプローチは「間違っている」と感じます。
1)セッションからWall集約ルートをロードし、PostsコレクションからFirstOrDefaultを選択します。これは、集約ルートを介してウォールポストにアクセスしているという点で「正しい」と感じますが、これを行うと、すべてのウォールポストがデータベースからフェッチされます(無制限の結果セット)。
2)リクエストによって渡されたwallPostIdを使用して、セッションから直接ウォールポストをロードします。集約ルートを回っているため、これは「間違っている」と感じますが、データベースで1行のデータが1回ヒットするだけです。
どちらがより良いまたは好ましいアプローチですか?他にどのような提案がありますか?