Dapper.Net: IEnumerable Исключение параметра: исключение не существует из типа объекта System.Int64 [] для известного управляемого типа управляемого поставщика

c# dapper in-subquery where-in

Вопрос

Я использую Dapper.Net против SQL Server 2008 R2 в следующем коде, чтобы передать параметр List<long> для запуска SQL-запроса с предложением WHERE IN, но я получаю исключение:

Нет сопоставления с типом объекта System.Int64 [] с известным типом управляемого управляемого провайдера.

Кстати, company_name_id и industry_id - это типы bigint.

var parameters = new DynamicParameters();
parameters.Add("@companyNameId", entry.Id);
parameters.Add("@industryIds", deletedIndustryIds);
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["server1"].ConnectionString))
{
    connection.Open();
    connection.Execute("DELETE FROM company_name_industry_map WHERE company_name_id = @company_name_id and industry_id IN @industryIds", param: parameters);
    connection.Close();
}

Я видел в документации github, что Dapper имеет поддержку списка, но мне было интересно, поддерживается ли List<long> .

Согласно старой документации на https://code.google.com/p/dapper-dot-net/ , похоже, что поддерживается только int [] .

Принятый ответ

Кажется, что исключение случается, вы используете try для передачи списка, если объект параметра имеет тип DynamicParameters .

Моим обходным путем был создан объект set param как анонимный объект; вместо этого работал следующий код.

using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["server1"].ConnectionString))
{
    connection.Open();
    connection.Execute("DELETE FROM company_name_industry_map WHERE company_name_id = @company_name_id and industry_id IN @industryIds",
new { company_name_id = entry.Id, industryIds = deletedIndustryIds });
    connection.Close();
}


Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему