我们目前正在开发一个内部系统,使用存储库模式和实体框架 5 作为我们的 ORM。
我们在我们的数据库中有一堆我们调用的存储过程。其中一些过程具有相似的参数名称。因此,当我们调用执行存储过程时,如下所示:
DbContext.Database.SqlQuery<ReturnType>(query, parameters)
生成的可枚举在第二次调用具有相似参数名称的另一个过程时失败,说:
用户代码未处理 ArgumentException:SqlParameter 已包含在另一个 SqlParameterCollection 中。
我们尝试将所有SqlParameters
内容放入一个集合中,然后循环遍历该集合并将集合中的所有项目都归零,但这也失败了……非常好。
有没有办法在这个堆栈跟踪中访问和操作对象数组?
在 System.Data.SqlClient.SqlParameterCollection.Validate(Int32 index, Object value)
在 System.Data.SqlClient.SqlParameterCollection.AddRange(Array values)
在 System.Data.Objects.ObjectContext.CreateStoreCommand(String commandText, Object[] 参数)
在 System.Data.Objects.ObjectContext.ExecuteStoreQueryInternal[TElement](String commandText, String entitySetName, MergeOption mergeOption, Object[] 参数)
在 System.Data.Objects.ObjectContext.ExecuteStoreQuery[TElement](String commandText, Object[] 参数)
在 System.Data.Entity.Internal.InternalContext.ExecuteSqlQuery[TElement](String sql,Object[] 参数)
在 System.Data.Entity.Internal.InternalContext.ExecuteSqlQueryAsIEnumerable[TElement](String sql, Object[] 参数)
在 System.Data.Entity.Internal.InternalContext.ExecuteSqlQuery(Type elementType, String sql, Object[] 参数)
在 System .Data.Entity.Internal.InternalSqlNonSetQuery.GetEnumerator()
在 System.Data.Entity.Internal.InternalSqlQuery 1 源)1.GetEnumerator()
at System.Linq.Enumerable.First[TSource](IEnumerable