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

标签 c# asp.net entity-framework entity-framework-4

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

相关文章:

c# - Monotouch (Xamarin.iOS) 内存泄漏

c# - 从 POST 发回请求

c# - 比较两个频谱图以找到它们匹配算法的偏移量

生成 HTML 和 Excel 的 ASP.Net Web 服务器控件

c# - 如何使用 C# 和 ASP.NET 以 P2P 方式传输多媒体文件?

c# - 在字符串中查找字符串可以为空的单词(有时)

.net - 查询更新多行

c# - .net core 2.0 JWT token 过期问题

ASP.NET 如何获取 HttpException 错误代码

asp.net-mvc - Entity Framework 不更新模型的复杂集合属性