次のコードで SQL Server 2008 R2 に対して Dapper.Net を使用して、List<long>
パラメータを渡して WHERE IN 句を持つ SQL クエリを実行していますが、例外が発生します。
オブジェクト型 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();
}
Dapperがリストをサポートしていることをgithubのドキュメントで見ましたが、サポートされているのだろうかと思ってList<long>
いました。
https://code.google.com/p/dapper-dot-net/の古いドキュメントによると、int[]のみがサポートされているようです。