与MiniProfiler一起使用时,为什么Dapper QueryAsync会引起歧义?

时间:2019-01-17 13:41:26

标签: c# dapper miniprofiler .net-core-2.2

编辑 1 : 尝试显式调用扩展方法时:

Dapper.SqlMapper.QueryAsync<dynamic>(cnx, "SELECT TOP 10 * FROM dbo.Company;");

我有一个更明确的错误消息:

  

“ Dapper.StrongName,版本= 1.50.2.0,Culture = neutral,PublicKeyToken = e3e8412083d25dd3”和“ Dapper,版本= 1.50.5.0,Culture = neutral,PublicKeyToken = null”中都存在类型“ SqlMapper”

我能做些什么吗?

Dapper.StrongName是MiniProfiler(.Net标准1.5)的依赖项


我正在尝试与Dapper一起使用MiniProfiler,以查看将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,字符串,对象,System.Data.IDbTransaction,int?,System.Data.CommandType?)”和“ Dapper.SqlMapper.QueryAsync(System.Data.IDbConnection,字符串,对象,System.Data.IDbTransaction,int ?, System.Data.CommandType?)'

除非我需要一副新的杯子,否则歧义方法是相同的。

我在这里想念什么?

2 个答案:

答案 0 :(得分:0)

解决方案是使用Dapper.StrongName nuget代替Dapper。

答案 1 :(得分:0)

还可以删除现有明确包含的对 Dapper 的 nuget 引用,并使用作为 MiniProfiler 存储提供程序的依赖项安装的内容。