ObjectContext.ExecuteStoreCommand,如何清除调用之间的参数?
我使用不同的命令和不同的参数多次调用 ObjectContext.ExecuteStoreCommand,尽管我对多个命令使用相同的参数列表(对象)。我收到以下异常:
System.ArgumentException:SqlParameter 已包含在另一个 SqlParameterCollection 中。
有没有办法像直接使用 ADO.NET 一样清除调用之间的参数?
更新了代码示例:
string sqlDeleteWebUserGreen = "delete WebUserGreen where WebUserId = @WebUserId";
string sqlDeleteWebUserBlue = "delete WebUserBlue where WebUserId = @WebUserId";
var argsDeleteWebUserXref = new DbParameter[] {
new SqlParameter { ParameterName = "WebUserId", Value = user.WebUserId }
rowsAffectedDeleteWebUserXref += base.context.ExecuteStoreCommand(sqlDeleteWebUserGreen, argsDeleteWebUserXref);
rowsAffectedDeleteWebUserXref += base.context.ExecuteStoreCommand(sqlDeleteWebUserBlue, argsDeleteWebUserXref);
更新
基本上我无法找到任何更好的方法来做到这一点,所以我最终接受了下面的答案。唯一的区别是我只是将参数的创建放入单独的方法中,因此我的调用看起来像 base.context.ExecuteStoreCommand(sqlDeleteWebUserBlue, MethodThatWillGiveMeTheParameterArray());
I am making multiple calls to ObjectContext.ExecuteStoreCommand with different commands and different parameters, although I use the same parameter list (object) for a several of the commands. I am getting the following exception:
System.ArgumentException: The SqlParameter is already contained by another SqlParameterCollection.
Is there a way to clear parameters between calls as I would do with straight up ADO.NET?
Updated with a code sample:
string sqlDeleteWebUserGreen = "delete WebUserGreen where WebUserId = @WebUserId";
string sqlDeleteWebUserBlue = "delete WebUserBlue where WebUserId = @WebUserId";
var argsDeleteWebUserXref = new DbParameter[] {
new SqlParameter { ParameterName = "WebUserId", Value = user.WebUserId }
rowsAffectedDeleteWebUserXref += base.context.ExecuteStoreCommand(sqlDeleteWebUserGreen, argsDeleteWebUserXref);
rowsAffectedDeleteWebUserXref += base.context.ExecuteStoreCommand(sqlDeleteWebUserBlue, argsDeleteWebUserXref);
UPDATE
Basically I am unable to find any better way of doing this, so I ended up accepting the answer below. The only difference is that I simply put the creation of the parameter into a separate method, so my calls look like base.context.ExecuteStoreCommand(sqlDeleteWebUserBlue, MethodThatWillGiveMeTheParameterArray());
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题是您两次使用相同的参数。
试试这个
The problem is that you are using the same parameter twice.
try this