Dapper.net SQL Syntax Error con DynamicParameters

c# dapper sql sql-server

Pregunta

Estoy intentando crear una consulta SQL dinámica para actualizar una tabla en SQL Server, así:

string alan = "SaticiKodu";

DynamicParameters paramStSabit = new DynamicParameters();
string sqlSabit = "UPTADE TBLSTSABIT SET ";

if (alan == "SaticiKodu")
{
    sqlSabit += " SATICI_KODU = @SaticiKodu ,";
    paramStSabit.Add("SaticiKodu", _msk.SaticiKodu);//_msk.SaticiKodu comes from List<T> in foreach loop
}

if (sqlSabit.Contains("="))   // here I check if I have any column update with '='
{
    sqlSabit += "WHERE STOK_KODU = @StokKodu";
    paramStSabit.Add("StokKodu", _msk.StokKodu);
    sqlSabit= sqlSabit.Replace(",WHERE", " WHERE");
    db.Execute(sqlSabit, paramStSabit, transaction: _transaction, commandType: CommandType.Text);
}

Tengo una lista de objetos, tiene muchas propiedades, pero para abreviar, aquí escribo solo StokKodu y StokAdi. Este código arroja un error

Sintaxis incorrecta en '='

Creo que este código debería funcionar con Dapper.

¿Cómo puedo hacer que este código funcione? ¿Dónde está mi error? Gracias por la ayuda de ahora.

Respuesta aceptada

Todo lo que hago es cambiar

string sqlSabit

a

StringBuilder sqlSabit

y en lugar de unir cadenas con + =, utilicé sqlSabit.Append (), ahora el código está funcionando. Y probé con columnas / parámetros de cadena, entero y flotante, no hay problema.

Pero no pude entender por qué StringBuilder resuelve el problema.



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é