C# ObjectContext.ExecuteStoreCommand,如何清除调用之间的参数?
我使用不同的命令和不同的参数多次调用ObjectContext.ExecuteStorommand,尽管我对多个命令使用相同的参数列表(对象)。我得到以下例外情况:C# ObjectContext.ExecuteStoreCommand,如何清除调用之间的参数?,c#,asp.net,entity-framework,entity-framework-4,C#,Asp.net,Entity Framework,Entity Framework 4,我使用不同的命令和不同的参数多次调用ObjectContext.ExecuteStorommand,尽管我对多个命令使用相同的参数列表(对象)。我得到以下例外情况: System.ArgumentException:SqlParameter已包含在另一个SqlParameterCollection中。 有没有一种方法可以像我使用Direct up ADO.NET那样清除调用之间的参数 使用代码示例更新: string sqlDeleteWebUserGreen = "delete Web
System.ArgumentException:SqlParameter已包含在另一个SqlParameterCollection中。
有没有一种方法可以像我使用Direct up 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,MethodThwillGiveMetheParameterArray())代码>问题是您使用同一参数两次
试试这个
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);
你能发布你的代码吗?听起来你是在重复使用一个应该在每次使用后丢弃的对象。@Shiraz Bhaiji,我用导致异常的区域进行了更新。事实上,我不想处理任何东西,所有这些都是对.ExecuteStoreCommand()进行10次调用的事务的一部分。我知道,在直接的ADO.NET中,我只想在调用之间调用Parameters.Clear(),但我没有看到通过实体框架公开这种功能。简单地创建两个包含相同确切参数的不同对象似乎是解决此问题的最后解决方案,您不这样认为吗?它似乎以某种方式将参数连接到存储过程,因此不允许您同时在两个过程中使用它。