Dapper.NET
Parametri dinamici
Ricerca…
Uso di base
Non è sempre possibile impacchettare ordinatamente tutti i parametri in un singolo oggetto / chiamata. Per aiutare con scenari più complicati, dapper consente al parametro param
di essere un'istanza IDynamicParameters
. Se si esegue questa operazione, il metodo AddParameters
personalizzato viene chiamato al momento opportuno e viene consegnato il comando a cui aggiungere. Nella maggior parte dei casi, tuttavia, è sufficiente utilizzare il tipo di DynamicParameters
preesistente:
var p = new DynamicParameters(new { a = 1, b = 2 });
p.Add("c", dbType: DbType.Int32, direction: ParameterDirection.Output);
connection.Execute(@"set @c = @a + @b", p);
int updatedValue = p.Get<int>("@c");
Questo mostra:
- (facoltativo) popolazione da un oggetto esistente
- (facoltativo) aggiunta di parametri aggiuntivi al volo
- passare i parametri al comando
- recuperare qualsiasi valore aggiornato dopo che il comando è terminato
Si noti che a causa di come funzionano i protocolli RDBMS, di solito è solo affidabile ottenere valori di parametri aggiornati dopo che tutti i dati (da un'operazione Query
o QueryMultiple) sono stati completamente utilizzati (ad esempio, su SQL Server, i valori dei parametri aggiornati sono alla fine del flusso TDS).
Parametri dinamici in Dapper
connection.Execute(@"some Query with @a,@b,@c", new {a=somevalueOfa,b=somevalueOfb,c=somevalueOfc});
Utilizzando un oggetto modello
È possibile utilizzare un'istanza di un oggetto per formare i parametri
public class SearchParameters {
public string SearchString { get; set; }
public int Page { get; set; }
}
var template= new SearchParameters {
SearchString = "Dapper",
Page = 1
};
var p = new DynamicParameters(template);
Puoi anche usare un oggetto anonimo o un Dictionary