使用EF在MVC应用程序中发生System.Data.Entity.Core.EntityCommandExecutionException

时间:2015-06-29 14:26:11

标签: c# entity-framework

我即将创建一个以UUID作为唯一键(不是主键)的应用程序表单。

我收到了错误:

  

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

连接字符串到DB:

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

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

FormsContext.cs:

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

数据库是这样的:

{{1}}

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

修改/分辨率

我不确定如何检查内部异常,我对此做了一些研究。因此,当我在内部异常中阅读错误消息时,我可以解决我的问题。

我发现了这个bug是什么。查询字段是&#39; firstname&#39;但我的表格列名是“第一个”#。他们没有匹配。一旦我更改了DB列名称,它就再次运行。

3 个答案:

答案 0 :(得分:13)

  

发现了什么错误。查询字段是'firstname'但我的表列名是'first'。他们没有匹配。一旦我更改了DB列名称,它就再次运行。

如果数据库始终处于不稳定状态,必须努力使每个人保持同步。

为什么?

EF只是一组映射,一个及时的快照,以及这些映射是对表还是存储过程,都没关系。

对于列名称或外键约束的任何细微更改都可以对任何映射具有 ripple 效果,并且需要将它们重新映射/搭建到新结构中(一个或多个);否则因此来自旧映射的奇怪行为。

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

因此始终要小心保持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

答案 1 :(得分:5)

在我的情况下帮助了下一步:

1)按View Detail..按钮:

enter image description here

2)检查您的实际错误:

enter image description here

希望对某人有所帮助。

答案 2 :(得分:0)

以防万一这对某人有帮助-我看到了此错误消息。事实证明,我已经更改了与EF模型关联的数据库,并且没有正确设置连接字符串。