EDIT 1 : Beim Versuch, die Erweiterungsmethode explizit aufzurufen:
Dapper.SqlMapper.QueryAsync<dynamic>(cnx, "SELECT TOP 10 * FROM dbo.Company;");
Ich habe eine viel explizitere Fehlermeldung:
Der Typ 'SqlMapper' ist sowohl in 'Dapper.StrongName, Version = 1.50.2.0, Culture = neutral, PublicKeyToken = e3e8412083d25dd3' als auch 'Dapper, Version = 1.50.5.0, Culture = neutral, PublicKeyToken = null' vorhanden.
Kann ich etwas dagegen unternehmen?
Dapper.StrongName ist eine Abhängigkeit von MiniProfiler (.Net Standard 1.5)
Ich versuche, MiniProfiler neben Dapper zu verwenden, um zu sehen, wie SQL-Befehle an das Backend gesendet werden.
Ich habe den folgenden Code, um bei Bedarf eine instrumentierte Verbindung herzustellen:
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;
}
Der folgende verbrauchende Code wird nicht mehr kompiliert:
using (DbConnection cnx = GetCnx())
{
await cnx.OpenAsync();
return await cnx.QueryAsync<dynamic>("SELECT TOP 10 * FROM dbo.Company;");
}
Der Aufruf ist zwischen den folgenden Methoden oder Eigenschaften mehrdeutig: 'Dapper.SqlMapper.QueryAsync (System.Data.IDbConnection, Zeichenfolge, Objekt, System.Data.IDbTransaction, int ?, System.Data.CommandType?)' Und 'Dapper.SqlMapper .QueryAsync (System.Data.IDbConnection, Zeichenfolge, Objekt, System.Data.IDbTransaction, int ?, System.Data.CommandType?) '
Die mehrdeutigen Methoden sind identisch, es sei denn, ich brauche ein neues Glas.
Was fehlt mir hier?
Die Lösung ist, das Dapper.StrongName-Nuget anstelle von Dapper zu verwenden.