作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在以下代码中针对 SQL Server 2008 R2 使用 Dapper.Net 来传递 List<long>
参数来运行具有 WHERE IN 子句的 SQL 查询,但我得到异常:
不存在从对象类型 System.Int64[] 到已知托管提供程序 native 类型的映射。
对了,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 上看到了 documentation Dapper 支持 List,但我想知道 List<long>
支持。
根据 https://code.google.com/p/dapper-dot-net/ 上的旧文档似乎只支持 int[]。
最佳答案
如果参数对象的类型为 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();
}
关于c# - Dapper.Net : IEnumerable<long> parameter throws exception: No mapping exists from object type System. Int64[] 到已知托管提供程序 native 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16257195/
我是一名优秀的程序员,十分优秀!