【发布时间】:2013-08-09 22:30:09
【问题描述】:
我在这里做错了什么?
...
using (var ctx = ObjectContextManager<MyDataContext>.GetManager("MyDataContext"))
{
var idsToUpdate = "2,3";
var parameters = new[]
{
new SqlParameter("DesiredEndDate", SqlDbType.DateTime).Value = newUpperLimit,
new SqlParameter("TasksToUpdate", SqlDbType.NVarChar).Value = idsToUpdate
};
ctx.ObjectContext.ExecuteStoreCommand("UPDATE dbo.Tasks SET DesiredEndDate = @DesiredEndDate WHERE Id IN (SELECT Id FROM dbo.fn_Split(@TasksToUpdate, N','))", parameters);
ctx.ObjectContext.SaveChanges();
}
...
我得到了错误
必须声明标量变量“@DesiredEndDate”。
必须声明标量变量“@TasksToUpdate”。
但我看不出我的代码有什么问题:/
【问题讨论】:
-
不确定您使用
@DesiredEndDate时遇到的错误,但使用IN (@TasksToUpdate)的方法无论如何都行不通。 -
我已经通过使用硬编码值手动执行查询对其进行了测试。你能解释一下为什么你认为这是错误的吗?
-
这行不通。这将与
Id IN ('1,2')与Id IN (1,2)不一样 -
你是对的。感谢您指出。更新。但是仍然遇到相同的错误:(
标签: c# sql-server entity-framework