gpt4 book ai didi

c# - ObjectContext.ExecuteStoreCommand,如何在调用之间清除参数?

转载 作者:行者123 更新时间:2023-11-30 17:19:22 26 4
gpt4 key购买 nike

我使用不同的命令和不同的参数多次调用 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());

最佳答案

问题是您两次使用相同的参数。

试试这个

var argsDeleteWebUserXref1 = new DbParameter[] {         new SqlParameter { ParameterName = "WebUserId", Value = user.WebUserId }  

var argsDeleteWebUserXref2 = new DbParameter[] { new SqlParameter { ParameterName = "WebUserId", Value = user.WebUserId }

rowsAffectedDeleteWebUserXref += base.context.ExecuteStoreCommand(sqlDeleteWebUserGreen, argsDeleteWebUserXref1);
rowsAffectedDeleteWebUserXref += base.context.ExecuteStoreCommand(sqlDeleteWebUserBlue, argsDeleteWebUserXref2);

关于c# - ObjectContext.ExecuteStoreCommand,如何在调用之间清除参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4970231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com