在MVC 3項目中,我使用EF4,IoC和Agatha-RRSL作爲服務層。Dapper。 IoC,Testing和Agatha
幸運的是,本週我發現了Dapper,並且我正從EF4轉向Dapper!
通常我注入通用庫在我的阿加莎請求處理程序...
但是我應該如何使用小巧精緻的?
1)我應該在Agatha Handler中注入一個IDbConnection嗎? 然後在處理程序中使用它與Dapper Query或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 2012-03-24 08:09:29
是的,我剛剛找到了Dapper-Rainbow ......但我正在考慮打破3:包含連接的數據庫中的代碼,以及方法的轉換和存儲庫的會話。你怎麼看?我認爲測試更好。你怎麼看?我會在這裏發佈我的代碼... – 2012-03-24 11:18:39
你finnaly做了什麼? – GorillaApe 2012-10-25 18:19:48