Почему с Dapper QueryAsync возникает неопределенность при использовании с MiniProfiler?
РЕДАКТИРОВАТЬ 1: При попытке вызвать метод расширения явно:
Dapper.SqlMapper.QueryAsync<dynamic>(cnx, "SELECT TOP 10 * FROM dbo.Company;");
У меня гораздо более явное сообщение об ошибке:
Тип 'SqlMapper' существует как в 'Dapper.StrongName, версия =1.50.2.0, культура = нейтральная, PublicKeyToken=e3e8412083d25dd3', так и в 'Dapper, версия =1.50.5.0, культура = нейтральная, 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, строка, объект, System.Data.IDbTransaction, int?, System.Data.CommandType?)' И 'Dapper.SqlMapper.QueryAsync (System.Data.IDbConnection, строка, объект, System.Data.IDbTransaction, int?, System.Data.CommandType?) '
Неоднозначные методы идентичны, если только мне не нужна новая пара стёкол.
Что мне здесь не хватает?
2 ответа
Решение состоит в том, чтобы использовать Daget.StrongName nuget вместо Dapper.
Можно также удалить существующую явно включенную ссылку nuget на Dapper и перейти к тому, что устанавливается в зависимости от поставщиков хранилища MiniProfiler.