8

我有以下抛出一个SqlParameter 已包含catch在块中的另一个 SqlParameterCollection异常中。

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

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    }
4

1 回答 1

19

.ToList()所以不知何故,答案是在行尾打电话33

其他人注意... 将using语句添加using System.Linq;到文件顶部,否则您将无法ToList()选择。

于 2013-06-21T13:39:21.857 回答