私は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: 整数の入力構文が無効です:」というエラーが表示されます。これを克服する方法はありますか?はいの場合、文字列を使用する必要がある最初の削除ステートメントで同様のことができますか?