Ich möchte eine gespeicherte Prozedur mit Dapper aufrufen und der gesamte Code, den ich bisher gesehen habe, tut dies, indem er die Parameter der gespeicherten Prozedur mit dem @ -Zeichen angibt. Dies bedeutet, dass ich nicht einfach eine Modellklasse definieren und sie an Dappers Query- oder Execute-Methode übergeben kann, indem ich die Modellinstanz neu übersetze, was wie eine Verschwendung von Zeit und Speicher erscheint. Ist das, was ich wirklich tun muss?Wenn ich eine gespeicherte T-SQL-Prozedur mit Dapper aufrufen muss, muss ich '@' verwenden?
Zum Beispiel akzeptiert der folgende Code eine Modellinstanz. Das Modell verfügt über alle Eigenschaften der Tabelle sp_GetUser. Ich würde erwarten, dass Dapper diese Modelleigenschaften beim Aufruf in die Parameter der gespeicherten Prozedur übergibt. Ist das der Fall oder muss ich wirklich das übergebene Objekt im Parameter 'param' definieren?
public IList<User> GetUsers(UserSP user)
{
using (var cn = new SqlConnection(ConnectionString))
{
var users = cn.Query<User>("sp_GetUsers",
param: new
{
@Id = user.Id,
@NAme = user.Name,
@Age = user.Age
},
commandType: CommandType.StoredProcedure).ToList();
return users;
}
}
Nein füllen, müssen Sie nicht das @ -Zeichen verwenden müssen (https://github.com/StackExchange/Dapper#parameterized-queries) – peco
Ehrfürchtig. Muss ich noch nur die Eigenschaften übergeben, die den Parametern der Prozedur zugeordnet werden können? –
Können Sie es einfach versuchen? param: user – Crowcoder