저는 postgresql 데이터베이스를 가지고 있으며 가능한 한 적은 수의 쿼리에서 테이블에서 여러 행을 제거하려고합니다. 따라서 루핑은 좋은 옵션이 아닙니다. postgres 드라이버에 NPGSQL을 사용하고 있습니다.WHERE IN 절을 사용하여 PostgreSQL에서 Entity Framework로 여러 행을 삭제합니다.
아래 코드는 있지만 작동하지 않습니다.
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 ERROR"를 얻을 오류를 마지막으로 쿼리를 실행하려고 할 때. 이것을 극복 할 수있는 방법이 있습니까? 그렇다면 문자열을 사용해야하는 첫 번째 delete 문을 사용하여 비슷한 작업을 수행 할 수 있습니까?
같은 오류가 발생했습니다. = 기호는 내 부분의 오타였습니다. – idipous
@idipous 문자열 (목록이 아님)을 전달하려고 시도 했습니까? 대답을 바 꾸었습니다. –
@idipous는'string.format'을 시도 할 수 있습니까? –