LinqToSql动态插入

本文关键字:插入 动态 LinqToSql | 更新日期: 2023-09-27 17:57:40

我目前有一个Linq-to-Sql实现,它需要很长时间才能完成插入,所以我试图使用一个紧凑的insert语句来加快它的速度,但仍然使用Linq-to-Sql的execute命令。

我有一个string[],我正试图将它传递到ExecuteCommand的object[] parameters参数中,就像这样

string sqlStart = "INSERT INTO BusinessContacts (Guid,BusinessId,Name,Email,Address,City,State,PostalCode,Phone,URL) VALUES ";
string sqlParams = "(NewId(),1,{{{0}}},{{{1}}},{{{2}}},{{{3}}},{{{4}}},{{{5}}},{{{6}}},{{{7}}}),";
string[] values = new string[8000];
int curParam = -1;
sbSqlValues.Append(sqlStart);
foreach (var email in emails) {
    sbSqlValues.AppendFormat(sqlParams, ++curParam, ++curParam, ++curParam, ++curParam, ++curParam, ++curParam, ++curParam, ++curParam);
    curParam -= 8;
    values[++curParam] = email.Name;
    values[++curParam] = (email.Email);
    values[++curParam] = (email.Address);
    values[++curParam] = (email.City);
    values[++curParam] = (email.State);
    values[++curParam] = (email.PostalCode);
    values[++curParam] = (email.Phone);
    values[++curParam] = (email.URL);
}
sbSqlValues.Remove(sbSqlValues.Length - 1, 1);
inserted += ExecuteCommand(sbSqlValues.ToString(), values);

但是,即使我传入了一个字符串数组,我仍然会得到异常:A query parameter cannot be of type 'System.Object'.

LinqToSql动态插入

尝试:(object[])values作为第二个参数。C#编译器将string[]转换为一个元素params

相关文章: