Realizando MERGE con Dapper.net

dapper

Pregunta

Estamos utilizando Dapper.net para la capa de datos en una aplicación ASP.net MVC 5.

Una operación requiere el uso del comando MERGE (si TitleID existe, actualice el registro, si no lo tiene, insértelo) - algo como esto:

MERGE BookInventory bi
USING BookOrder bo
ON bi.TitleID = bo.TitleID
WHEN MATCHED THEN
  UPDATE
  SET bi.Quantity = bi.Quantity + bo.Quantity
WHEN NOT MATCHED BY TARGET THEN
  INSERT (TitleID, Title, Quantity)
  VALUES (bo.TitleID, bo.Title,bo.Quantity);

¿Se puede usar Dapper para mapear valores en esta instrucción MERGE?

No puedo encontrar nada al respecto y no está claro cuál es el mejor enfoque para usar MERGE con Dapper.net.

Respuesta popular

No probado, pero esto debería hacer el truco:

const string sql = @"
    merge into SomeTable as Target
    using (select @myId AS id) as Source
    on (Target.id = Source.id)
    when matched then
        update set Target.SomeColumn = @myValue
    when not matched by Target then
        insert (SomeColumn) values (@myValue)";

conn.Execute(sql, new { myId = 999, myValue = 123 })


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é