MVC 3プロジェクトでは、サービスレイヤーとしてEF4、IoC、Agatha-RRSLを使用しています。Dapper。 IoC、Testing and Agatha
今週はDapperが見つかりました。私はEF4からDapperに移行しています!
通常私は...私のアガサ・リクエスト・ハンドラで一般的なリポジトリを注入
しかし、どのように私は、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が静的メソッドを使用していることを認識しています。 メモリに問題が発生していませんか?
ご迷惑をおかけして申し訳ありません...この権利をしようとしています。
はミゲル
レコードを挿入するには、Dapper-Rainbowを参照することもできます。 (NuGetで利用可能)。 PS:3) - dapperは開いている接続を取得します。 – Alex
はい、私はDapper-Rainbowを見つけました...しかし、私は3でこのコードを壊すことを検討しています:接続を保持するデータベース、トランザクションのセッションとメソッドのリポジトリ。どう思いますか?私はそれがテストの方が良いと思います。どう思いますか?私はここに私のコードを掲載します... –
あなたは何をしましたか? – GorillaApe