我刚刚开始我的第一个MVC项目使用Dapper (和Dapper.Contrib)而不是EF。我试图确保我在使用它时使用了正确的语法。搜索web,我可以看到,随着Dapper的发展,它的一些需求和语法也在不断发展。是否有最新的文件显示2016年使用Dapper的最佳做法?
具体来说,我的问题是:
推荐哪种方式?
private string dbconn = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
public Company Add(Company company)
{
using (SqlConnection cn = new SqlConnection(dbconn))
{
cn.Open();
var id = cn.Insert(company);
cn.Close();
company.id = Convert.ToInt16(id);
}
return company;
}或
private IDbConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
public Company Add(Company company)
{
var id = cn.Insert(company);
company.id = Convert.ToInt16(id);
return company;
}发布于 2016-12-09 06:30:25
对于Dapper,有两种管理连接的方法:
using块或显式调用Dispose来处理连接。DataAdapter.Fill()方法。在2016年,您应该避免将连接直接暴露到应用程序代码中。您应该使用UnitOfWork、Repository等模式来实现数据访问层(最好使用一些好的ORM,如您正在学习的Dapper )。UnitOfWork + Dapper的代码示例可以找到here。请通过它。我相信这会对你有帮助。
如果您不想实现UnitOfWork,下面是我的建议:
以下为样本:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
connection.Execute(......);
//OR
var data = connection.Query(......);
//OR whatever
}如果希望在较高范围内共享连接,因此无法使用using块,则只需确保Dispose连接正确。
以下为样本:
SqlConnection connection = new SqlConnection(connectionString);
//Dapper will open connection on next line.
var data = connection.Query(......);
//Dapper will close connection in previous call.https://stackoverflow.com/questions/41051110
复制相似问题