我有一个 postgresql 数据库,我想做的是在尽可能少的查询中从表中删除一堆行。所以循环不是一个好的选择。我正在为 postgres 驱动程序使用 NPGSQL。
我有下面的代码,但它不起作用。
string[] namesToDelete = PromosReplies.
PromosRepliesLoaded.GroupBy(pr => pr.Name).
Select(r=>r.Key).ToArray();
long[] repliesIdsToDelete = context.PromosReplies.
Where(pr => namesToDelete.Contains(pr.Name)).
Select(r => r.Idx).ToArray();
if (repliesIdsToDelete.Length > 0)
{
foreach (var name in namesToDelete)
{
context.Database.ExecuteSqlCommand("DELETE FROM messages WHERE name = {0}", name);
}
string idToDelete = String.Join(",", repliesIdsToDelete);
int result = context.Database.ExecuteSqlCommand(
"DELETE FROM message_translations WHERE idx IN ({0})",
repliesIdsToDelete);
我在尝试执行最后一个查询时收到“错误:22P02:整数输入语法无效:”错误。有没有办法克服这个问题?如果是的话,我必须使用字符串的第一个删除语句可以做类似的事情吗?