Mat*_*ood 5 c# linq datacontext command execute
sql使用IN从C#LinQ到sql datacontext 运行自定义语句的最佳方法是什么?我试过了:
db.ExecuteCommand(
"UPDATE tblCard SET used = 1 WHERE id IN ({0}) AND customer_id = {1}",
Request.Form["ids"], customer_id
);
Run Code Online (Sandbox Code Playgroud)
对于通过表单传递的1个项目,这是好的,但如果我通过例如"2,1"发布,那么我得到一个sqlclient例外:
将nvarchar值"2,1"转换为数据类型int时转换失败.
如果相反我使用string.format插入参数它工作正常,但显然这是对SQL注入开放.
LINQ-to-SQL 不使用串联;这将是以下形式的 TSQL 查询:
WHERE id IN (@p0)
Run Code Online (Sandbox Code Playgroud)
设置@p0为'123,456,789'.
对于常规 LINQ,您可以使用Contains. 有ExecuteQuery几个选项;例如,您可以“按原样”传入 CSV,并使用 UDF 在数据库中拆分它,然后加入它:
UPDATE c SET c.used = 1
FROM dbo.SplitCsv({0}) udf
INNER JOIN tblCard c
ON c.Id = udf.Value
AND c.Customer_ID = {1}
Run Code Online (Sandbox Code Playgroud)
dbo.SplitCsv互联网上有许多这样的“分割”udf 之一,在哪里?
| 归档时间: |
|
| 查看次数: |
5519 次 |
| 最近记录: |