私はasp.net mvc 3で作業しています。次のようなシナリオがあります:
- User モデルと Group モデルがあります。ユーザーは多くのグループを持つことができ、グループは多くのユーザーを持つことができます。したがって、これは多対多の関係です。
- UserController と GroupController があります。
- ユーザーは新しいグループを作成できます。
- リポジトリ パターンで説明されているように、UsersRepository と GroupsRepository があります。
- GroupController には Create(Group newGroup) アクションがあります。
- ユーザーは 10 個を超えるグループを持つことはできません。
- グループ名は一意である必要があります。
問題 1: 制限 6 を処理するには、User クラスに IValidatableObject を実装し、User が 10 個を超えるグループを持っている場合に検証エラーを生成する必要があります。ただし、GroupController の Create アクションは Group のみをパラメーターとして受け取るため、モデル バインダーは User.Validate() を呼び出すことはありません。
問題 2: 制限 7 を処理する唯一の方法は、グループ リポジトリに既に存在するすべてのグループに対して新しいグループ名を検証することです。したがって、この検証は GroupsRepository にある必要があります。私はそれについて正しいですか?
結局のところ、私は何か間違ったことをしているような気がします。私の質問は: 私のシナリオでは、既存のユーザーによる新しいグループの作成を実装する最良の方法は何ですか? UserGrougViewModel のようなビューモデルを作成し、それを GroupController の Create アクションに渡す必要がありますか? または、Create(Group newGroup) アクションをそのままにして、UserController に CreateGroup(User user) アクションを追加して、ルール 6 に対してユーザーを検証し、GroupController のアクション Create(Group newGroup) にリダイレクトする必要がありますか?