Как использовать предложение IN для списка идентификаторов GUID в Dapper Delete Query - PullRequest
0 голосов
/ 24 сентября 2019

Как использовать предложение in в запросе удаления dapper?

DELETE FROM [tableName] where [columnName] in ({list of guids});

Я пробовал приведенный ниже код, но получаю ошибку «преобразования уникального идентификатора»:

//EmpIds is List of Guids;
var empIds = string.Format("{0}", string.Join(",", EmpIds.Select(x => $"'{x}'").ToArray()));

using (var connection = new SqlConnection(ConnectionString))
{
    connection.Open();
    var deletedRowsCount = connection.Execute("
                         DELETE FROM [Employee] WHERE EmployeeId in                         
                       (@empIds)",  new { empIds = empIds });
                        //EmployeeId is uniqueidentifier datatype in sqlserver db
}

Кто-нибудь подскажет, как решить эту проблему в более щадящем запросе массового удаления.

1 Ответ

0 голосов
/ 25 сентября 2019

Синтаксис поддержки List<> в dapper немного отличается от синтаксиса в реальном запросе t-sql.См .: https://github.com/StackExchange/Dapper

DELETE FROM [Employee] 
WHERE EmployeeId in @empIds

Не требуется скобки вокруг параметра предложения IN.И вы можете просто передать IEnumerable<>.как это new { empIds = new[] { Guid.NewGuid(), Guid.NewGuid() } }

...