gpt4 book ai didi

c# - 不使用 SqlParameterCollection 时,SqlParameter 已包含在另一个 SqlParameterCollection 中

转载 作者:太空狗 更新时间:2023-10-29 18:09:23 24 4
gpt4 key购买 nike

我在 catch block 中抛出了一个 The SqlParameter is already contained by another SqlParameterCollection 异常。

我觉得奇怪的是我们没有在任何地方创建 SqlParameterCollection。每次我们创建一个新实例时,SqlParameter 都不会被使用超过一次。另一个奇怪的是 test 包含存储过程的正确结果并将结果返回给调用方法,但是当我从 3 行再一步到 4 是它决定进入 catch block 的时候。不在 33 我希望它发生的地方...如果它有帮助,我们使用 CodeFirst 从 ObjectContext 切换到 DbContext生成工具。使用的所有其他数据库交互和存储过程都按预期工作。

1    try
2 {
3 tempMessages = Context.CheckExistingTables(importSession.ImportSessionID).ToList();
4 }
5 catch (Exception e)
6 {
7 this.LogError("Error validating the import file entities", e);
8 tempMessages.Add(new ErrorMessage() { ErrorType = 3, Message = string.Format("Error validating the import file entities: {0}", e.Message) });
9 }
...
20 public IEnumerable<ErrorMessage> CheckExistingTables(Guid? importSessionID)
21 {
22 SqlParameter importSessionIDParameter;
23
24 if (importSessionID.HasValue)
25 {
26 importSessionIDParameter = new SqlParameter("importSessionID", importSessionID);
27 }
28 else
29 {
30 importSessionIDParameter = new SqlParameter("importSessionID", typeof(System.Guid));
31 }
32
33 var test = Database.SqlQuery<ErrorMessage>("Import.CheckExistingTables @importSessionID", importSessionIDParameter);
34 return test;
35 }

最佳答案

所以不知何故,答案是在 33 行的末尾调用 .ToList()

注意其他人...将 using 声明 using System.Linq; 添加到文件顶部,否则您将没有 ToList( ) 选项。

关于c# - 不使用 SqlParameterCollection 时,SqlParameter 已包含在另一个 SqlParameterCollection 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17224577/

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