Я начал писать комментарий, но это было слишком долго.
Параметризованные запросы в LINQ-to-SQL должны хорошо работать для вас.Примерно так:
StringBuilder sbSQL = new StringBuilder(
"INSERT INTO [table] ([fk_id], [Description], [Title] ) VALUES");
int paramNum = 0;
List<object> paramValues = new List<object>();
foreach(var item in items)
{
sbSQL.AppendFormat("({{{0}}},{{{1}}},{{{2}}}),",
paramNum,
paramNum + 1,
paramNum + 2);
paramValues.Add(item.fk_id);
paramValues.Add(item.description);
paramValues.Add(item.title);
paramNum += 3;
}
myDataContext.ExecuteCommand(
sbSQL.Remove(sbSQL.Length - 1, 1).ToString(),
paramValues.ToArray());
Функция ExecuteCommand
просто принимает вашу команду SQL вместе с токенами ({0}
), совместимыми со стандартными функциями форматирования строк .NET, затем поворачиваетзначения, которые вы передаете в параметры, и использует их сгенерированные имена параметров вместо токенов.Вы должны написать команду и расположить параметры так, как вам нравится;он не собирается проверять или анализировать команду.