4

愚かな質問かもしれません:

アプリケーション データベースに多数の参照テーブルがあり、MVC3 サイトから更新したいと考えています。

これらのテーブルごとに CRUD メソッドを持つ「ReferenceController」を作成できます

また

この 1 つの参照テーブル (エンティティ) のためだけに CRUD メソッドを持つ "EntityController" を作成できます。

これについて従うべき賢明なパターンがあるかどうかわかりませんか?


編集:

Aggregate ごとにコントローラーを作成する場合、コントローラーのメソッドにどのように名前を付けますか?

e.g.
ReferenceController.CreateBusiness();
MyApplication/Reference/CreateBusiness
?

複数のまったく関連のない「参照」エンティティがあります。これは、非常に多数のメソッドを持つコントローラーを意味しますか? 例: リスト、作成、読み取り、更新、削除 + 確認?

コントローラー メソッドを Generic にして Create(T ...) を持つことはできますか?

4

3 に答える 3

4

私はこのようなことをします:

次のような一般的な Crud リポジトリ:

class CrudRepo<TEntity> where T : class{
  void All();
  void Add(TEntity entity);
  void Edit(TEntity entity);
  void Delete(TEntity entity);
}

次に、次のような一般的な Crud コントローラー

class CrudController<TEntity> where T : class{
    CrudRepository<TEntity> Repository;

    [HttpPost]
    ActionResult Add(TEntity entity){
      Repository.Add(entity);
    }

    // Similer for other actions
}

特定の種類のエンティティについては、次のように CrudController を拡張するだけです。

class StudentController : CrudController<Student>

編集1:

あまりにも多くのエンティティがある場合、CrudController各エンティティを継承する必要をなくす方法があります。そのためのカスタムを書きたいと思うかもしれませんControllerFactory

于 2012-07-03T06:18:51.193 に答える
3

集約ルートごとにリポジトリが必要です。コントローラーも同じです。

于 2012-06-28T10:24:44.627 に答える
1

次の 2 つのことが思い浮かびます。

  1. WEB API のようなものを使用して、エンティティごとにボイラープレート コードを再作成する必要がないようにします。
  2. トップレベルのエンティティに対してのみ CRUD のようなコントローラーを作成してください。つまり、どのクライアントからも変更できないものに対してコントローラーを作成する意味はありません。
于 2012-07-03T04:24:58.593 に答える