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



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow