ダッパIoC、テスト、アガサ

agatha-rrsl dapper inversion-of-control testing

質問

MVC 3プロジェクトでは、サービスレイヤーとしてEF4、IoC、Agatha-RRSLを使用しています。

幸いなことに、今週はDapperが見つかりました。私はEF4からDapperに移行しています!

通常、私はAgatha Request HandlersにGeneric Repositoryを挿入します...

しかし、私はどのようにDapperを使うべきですか?

1)私はAgathaハンドラにIDbConnectionを注入する必要がありますか?次に、DapperクエリまたはDapper Executeでそれを使用するハンドラの中で?これはテスト可能ですか?そして、嘲笑はどう?

2)Dapper用の汎用リポジトリを作成する必要がありますか?たぶんリポジトリは次のようなものになるでしょう:

public class Repository {

  private IDbConnection _connection;

  public Repository(IDbConnection connection) {
    _connection = connection;
  } // Repository

  public Int32 Execute(String sql, dynamic param = null) {
    return _connection.Execute(sql, param); 
  } // Execute

  // Query code   
}

IDbConnectionがここに挿入されます。

そして、リポジトリはハンドラ内に注入されます。

これをテストする方法がわかりません...

3)ハンドラの中にすべてのコードを置くだけですか?

using (SqlConnection connection = new SqlConnection(connectionString)) {
 connection.Execute(@"insert Roles(Name) values (@name)", new { name = "Role" }); 
}

しかし、テストはどうですか?

4)私はDapperが静的メソッドを使用していることを認識しています。これはメモリの問題を引き起こしませんか?

申し訳ありませんが、多くの質問...私はこの権利をしようとしています。

ありがとう、ミゲル

人気のある回答

遅い答えですが、私はあなたのリポジトリの実装が実際には "データアクセスオブジェクト"であることを指摘したいと思います。リポジトリは全体の集約を処理します。一緒に属している物のグループ。理想的には、インターフェイスは集合ルートタイプのオブジェクトを受け入れ、返すのが理想的です(たとえば、 Repository<User> void Update(User user) {}またはIEnumerable<User> Find(...) {} )メソッドがあることがあります)。

永続化機構の使用法または存在は、実装の詳細であり、通常はリポジトリ・インタフェースに属しません。また、SQLを使用することもありません。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ