【问题标题】:A first chance exception of type 'System.Data.Entity.Core.EntityCommandExecutionException' occurred in EntityFramework.SqlServer.dll“System.Data.Entity.Core.EntityCommandExecutionException”类型的第一次机会异常发生在 EntityFramework.SqlServer.dll
【发布时间】:2014-10-24 07:01:32
【问题描述】:

我正在尝试使用实体框架 6 调用存储过程。输出消息出现错误。

在 EntityFramework.SqlServer.dll 中发生了“System.Data.Entity.Core.EntityCommandExecutionException”类型的第一次机会异常

 using (var context = new PartnerPortalEntities2())
 {
    var outputParameter = new ObjectParameter("result", typeof(string));
    var spresults = context.assignRoles_CreateAccountAndContacts(user.Id, role, user.AccountId, user.AccountName, user.ContactId, user.FirstName, user.LastName, outputParameter);
    // Control never comes after the above line
    if(spresults.Equals("1"))
    {
       //Do something
    }
    else
    {
        // Do something
    }

    }

当我进行调试时,控件转到调用存储过程的行,之后我们在输出窗口上得到上述错误并且调试器停止,它永远不会进入 if 语句。

我已经在 SQLserver 上运行了存储过程,它在那里运行良好。任何想法可能是什么错误。我通过从数据库生成代码来构建上下文。

【问题讨论】:

  • 将存储过程放入 try/catch 并查看异常。
  • 感谢@Shoe,尝试 catch 帮助我解决了问题所在。我在我的 sp 中传递了一个输​​出变量
  • 如果您已经解决了您的问题,请务必回答您为解决问题所采取的解决方案和相关步骤。

标签: asp.net-mvc-5 entity-framework-6


【解决方案1】:

正如@Shoe 所建议的,我已经将存储过程调用嵌入到一个try catch 块中,该块捕获了异常并显示了确切的错误。

事实证明,我没有将确切的变量作为输出参数传递。将结果更改为结果,因为存储过程中定义的变量是结果

var outputParameter = new ObjectParameter("result", typeof(string));

【讨论】:

    【解决方案2】:

    我刚刚遇到了同样的错误,我设法修复了它!

    此错误可能是其他原因造成的,但此错误的原因是 SQL 服务器未配置为接受来自我的调试站的传输 - 我必须在 Sql 服务器设置中配置我的计算机的 IP 和然后它完美地工作了。

    希望对你有帮助。

    【讨论】:

    • 还有其他人尝试这个解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-25
    相关资源
    最近更新 更多