编辑1:当尝试显式调用扩展方法时:
Dapper.SqlMapper.QueryAsync<dynamic>(cnx, "SELECT TOP 10 * FROM dbo.Company;");
我有一个更明确的错误消息:
类型"SqlMapper"同时存在于"Dapper.StrongName,Version=1.52.0,Culture=neutral,PublicKeyToken=e3e8412083d25dd3"one_answers"Dapper,Version=1.0.5.0,Culture=neutral、PublicKeyToken=null"中
我能做点什么吗?
Dapper.StrongName是MiniProfiler(.Net标准1.5)的依赖项
我正在尝试将MiniProfiler与Dapper一起使用,以查看发送到后端的SQL命令。
我有以下代码来根据需要生成插入指令的连接:
private static DbConnection GetCnx(bool instrumented = false)
{
var cnx = new SqlConnection("Data Source=foo;Initial Catalog=bar;Integrated Security=SSPI;");
// Enabling statistics for logging purposes
if (instrumented)
return new ProfiledDbConnection(cnx, MiniProfiler.Current);
else
return cnx;
}
以下消耗代码将不再编译:
using (DbConnection cnx = GetCnx())
{
await cnx.OpenAsync();
return await cnx.QueryAsync<dynamic>("SELECT TOP 10 * FROM dbo.Company;");
}
以下方法或属性之间的调用不明确:"Dapper.SqlMapper.QueryAsync(System.Data.IDbConnection,string,object,System.Data.IDbTransaction,int?,System.Data.CommandType
模棱两可的方法是相同的,除非我需要一副新玻璃。
我在这里错过了什么?
解决方案是使用Dapper.StrongName nuget而不是Dapper。
还可以删除现有的明确包含的对Dapper的nuget引用,并根据MiniProfiler存储提供程序安装。