我有一个参数化查询,我尝试设置但是我收到此错误:
转换nvarchar值'7,8,17,31时转换失败, 32,35,36,37,48,49,50,51,57,58,59,60,76,77,79,80,90, 91 ...
这是我用来执行查询的函数。 ItemId是一个int类型。我不确定我哪里出错了?也许我用来设置param的类型不是它所期望的,但我不知道我如何将逗号分隔值作为int传递?
public IList<CustomEntity> GetData(string _itemIds)
{
return m_context.Database
.SqlQuery<CustomEntity>(
"SELECT <column names> FROM <table name> WHERE ItemId IN (@itemIds)",
new SqlParameter("@itemIds", _itemIds)
)
.ToList();
}
答案 0 :(得分:0)
你传入一个不是字符串的字符串 - 在sql语句中,它是一个以逗号分隔的整数列表。在这种情况下,您需要避免使用参数化查询,只需将未更改的字符串插入Sql语句(这很危险)。
但为什么不使用LINQ to Entities查询? (_itemIds需要是IEnumerable<int>
)
m_context.CustomEntities.Where( ce => _itemIds.Contains( ce.ItemId ) ).ToList()