在 MVC 3 项目中,我使用 EF4、IoC 和 Agatha-RRSL 作为我的服务层。
幸运的是,这周我找到了 Dapper,我正在从 EF4 迁移到 Dapper!
通常我在我的 Agatha 请求处理程序中注入一个通用存储库......
但是我应该如何使用 Dapper?
1) 我应该在 Agatha 处理程序中注入一个 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 使用静态方法。这不会引起一些记忆问题吗?
抱歉有这么多问题......我正在努力解决这个问题。
谢谢你,米格尔