DynamicParameters的Dapper.net SQL语法错误

时间:2017-02-11 01:36:11

标签: c# sql sql-server dapper

我试图构建一个动态的SQL查询来更新SQL Server中的表,如下所示:

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);
}

我有一个对象列表,它有很多属性,但为了简化示例,这里我只写StokKodu和StokAdi。此代码抛出错误

  

&#39; =&#39;的语法不正确

我认为这段代码应该适用于Dapper。

如何使这段代码有效,我的错误在哪里?感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我所做的只是改变

string sqlSabit

StringBuilder sqlSabit

而不是使用+ =连接字符串,我使用了sqlSabit.Append(),现在代码正常工作。我用字符串,整数和浮点型列/参数测试,没问题。

但无法理解StringBuilder解决问题的原因。