SQL Server 字符串问题

问题描述 投票:0回答:1

此 INSERT 语句在 SSMS 中运行时工作正常:

INSERT INTO GenInfo
    (ParameterKey, Value, Description, Secured, BranchID, GroupID)
    SELECT 
        'companyURLStem', 'http://dev-sql2019all/company/rdPage.aspx?rdSecureKey={0}', 
        'Main URL to access company reports', -1, BranchID, 4
    FROM Branch

但是,当我尝试使用 EF 在 C# 中将其作为字符串执行时,如下所示:

dbServices.ApplyChangeToTarget(sql);

我收到此错误:

索引(从零开始)必须大于或等于零且小于参数列表的大小

罪魁祸首是字符串中的

{0}
。如何避免这个错误?

我这样做是作为从源数据库到目标的编程数据迁移的一部分,因此我没有太多灵活性来进行自定义工作。我本以为该字符串的执行方式与 SSMS 中的执行方式完全相同。

有什么想法吗?

谢谢

卡尔

c# string entity-framework
1个回答
0
投票

解决方案如下:

foreach (var item in newItems)
{
    **item.Value = item.Value.Replace("{", "{{");
    item.Value = item.Value.Replace("}", "}}");**

    string sql = @$"INSERT INTO GenInfo
                   (ParameterKey, Value, Description, Secured, BranchID, GroupID)
                        SELECT '{item.ParameterKey}', '{item.Value}', '{item.Description}', {item.Secured}, BranchID, {item.GroupID}
                        FROM Branch";

    dbServices.ApplyChangeToTarget(sql);
}
© www.soinside.com 2019 - 2024. All rights reserved.