Dapper.NET
Parámetros dinámicos
Buscar..
Uso básico
No siempre es posible empaquetar cuidadosamente todos los parámetros en un solo objeto / llamada. Para ayudar con escenarios más complicados, dapper permite que el parámetro param
sea una instancia de IDynamicParameters
. Si hace esto, se llama al método AddParameters
personalizado en el momento adecuado y se le entrega el comando para que lo agregue. En la mayoría de los casos, sin embargo, es suficiente usar el tipo DynamicParameters
preexistente:
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");
Esta espectáculos:
- (opcional) población de un objeto existente
- (opcional) añadiendo parámetros adicionales sobre la marcha
- Pasando los parámetros al comando.
- recuperando cualquier valor actualizado después de que el comando haya finalizado
Tenga en cuenta que, debido a la forma en que funcionan los protocolos RDBMS, generalmente solo es confiable obtener valores de parámetros actualizados después de que todos los datos (de una operación Query
o QueryMultiple`) se hayan consumido por completo (por ejemplo, en SQL Server, los valores de parámetros actualizados están al final) de la secuencia de TDS).
Parámetros dinámicos en Dapper
connection.Execute(@"some Query with @a,@b,@c", new {a=somevalueOfa,b=somevalueOfb,c=somevalueOfc});
Usando un objeto de plantilla
Puedes usar una instancia de un objeto para formar tus parámetros
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);
También puedes usar un objeto anónimo o un Dictionary