【问题标题】:System.Data.Entity.Core.EntityCommandExecutionException Occurred in MVC app Using EFSystem.Data.Entity.Core.EntityCommandExecutionException 在使用 EF 的 MVC 应用程序中发生
【发布时间】:2015-09-16 01:38:39
【问题描述】:

我即将创建一个以 UUID 作为其唯一键(不是主键)的申请表。

我得到了错误:

EntityFramework.SqlServer.dll 中出现“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常,但未在用户代码中处理 附加信息:执行命令定义时出错。有关详细信息,请参阅内部异常。

到数据库的连接字符串:

 connectionString="Data Source=(localdb)\v11.0; 
                   Initial Catalog=FormsContext; 
                   Integrated Security=True; 
                   MultipleActiveResultSets=True;
                   AttachDbFilename=|DataDirectory|Forms.mdf"
 providerName="System.Data.SqlClient"

FormsContext.cs:

namespace ApplicationForm.Models
{
    public class FormsContext : DbContext
    {
        public FormsContext() : base("name=FormsContext")
        {
        }

        public System.Data.Entity.DbSet<ApplicationForm.Models.Form> Forms { get; set; }
...

数据库是这样的:

 FormsContext->Forms->{id,uuid,first,last...}

我不太确定这次发生了什么。有人可以帮我解决这个问题吗?

编辑/解决

我不确定如何检查内部异常,我对此进行了一些研究。所以当我阅读 Inner Exception 中的错误信息时,我可以解决我的问题。

我发现了错误是什么。查询字段是“名”,但我的表列名是“名”。他们不匹配。一旦我更改了数据库列名,它就可以再次工作了。

【问题讨论】:

  • Additional information: An error occurred while executing the command definition. See the inner exception for details. 检查内部异常了吗?请发布完整的异常消息 + 堆栈跟踪。
  • 您的数据库在 EF 尝试运行以选择您的模型的查询中引发异常。具体的 SQL 异常将包含在内部异常中。
  • @sstan,你是对的。我之前不确定如何检查内部异常。我做了一些研究,发现查询'firstname'与我的数据库表列名'first'不匹配。谢谢。
  • 您可以在答案部分为您自己的问题提供答案。或者将我的设置为答案......由你决定。无论如何表明这不是一个悬而未决的问题。 :-)

标签: c# entity-framework


【解决方案1】:

找出错误所在。查询字段是“名”,但我的表列名是“名”。他们不匹配。一旦我更改了数据库列名,它就可以再次工作了。

如果数据库总是在不断变化,则必须努力使每个数据库保持同步。

为什么?

EF 只是一组映射,一个时间快照,无论这些映射是到表还是存储过程,都没有关系。

对于列名或外键约束的任何细微更改都可能对任何映射产生涟漪影响,并且它们需要重新映射/脚手架到新结构中(s);否则因此来自旧映射的奇怪行为。

有时,这些影响会产生像您发现的那样明显的错误,或者甚至更隐蔽的非明显逻辑错误,这些错误可能会为工作(编译)软件提供微妙的逻辑错误。 我已经根据经验看到了逻辑错误,它们确实发生了。

因此,请始终保持 EF 映射同步。


我回答了一个不同的 EF 问题,但思路相似。

我遇到了这样一种情况,即在 EF 中,映射的存储过程在运行时失败,因为存储过程中的内部 更改 看到 sql cast 已从结果中删除了列名,并且 EF(在更改之前映射)失败。我的答案中有一个屏幕截图,显示 EF/db 更改可能会产生有害影响:

The data reader is incompatible . A member does not have a corresponding column in the data reader with the same name

【讨论】:

    【解决方案2】:

    在我的情况下帮助下一个:

    1) 按View Detail.. 按钮:

    2) 检查您的实际错误:

    希望对某人有所帮助。

    【讨论】:

      【解决方案3】:

      以防万一这对某人有所帮助 - 我看到了这条错误消息。结果发现我更改了与我的 EF 模型关联的数据库,并且没有正确设置连接字符串。

      【讨论】:

        猜你喜欢
        • 2012-08-25
        • 1970-01-01
        • 2011-12-10
        • 1970-01-01
        • 2014-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多