Asignar dos objetos en una consulta de actualización

dapper

Pregunta

Dapper es capaz de asignar esta consulta al objeto del car . Sabe qué propiedad del automóvil va a qué variable en la consulta.

Car car = new Car();
conn.Execute(
      "UPDATE CAR" +
      " SET COLOR=@Color,MODEL=@Model" +
      " WHERE ID=@Id", car;

¿Pero puedo agregar otra variable a la consulta? P.ej:

int c = 1000; 
conn.Execute(
      "UPDATE CAR" +
      " SET COLOR=@Color,MODEL=@Model,COST=@cost" +
      " WHERE ID=@Id", car, new { cost = c };

Me gustaría hacer esto sin tener que unir todas las propiedades del objeto del automóvil con una variable de la consulta. Aquí está la clase de ejemplo, pero tengo muchas más propiedades en mi clase real.

public class Car {
    public int Id { get; set; }
    public string Color { get; set; }
    public string Model { get; set; }
}

Respuesta aceptada

Puede haber una respuesta mejor, pero esto funcionó por ahora:

int c = 1000; 
conn.Execute(
      "UPDATE CAR" +
      " SET COLOR=@Color,MODEL=@Model,COST=" + c +
      " WHERE ID=@Id", car;

Respuesta popular

Normalmente solo creo una nueva dinámica para todos los parámetros. Por ejemplo:

var car = new Car();
car.Color = "Black";
car.Model = "BMW";
car.Id = 123;
var cost = 53000

DbConnection.Execute(@"update car set color=@color, model = @model, cost = @cost where id = @id",
                new { color = car.Color, model = car.Model, cost = cost, id=car.Id});

De esta forma, puede ensamblar la dinámica desde múltiples objetos / variables.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué