错误3004:从行开始映射片段时出现问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误3004:从行开始映射片段时出现问题相关的知识,希望对你有一定的参考价值。

构建我的Web服务时出现此错误:

错误3004:从第323行开始的映射片段中的问题:没有为属性JE_TRN_HS.JE_HDR_HSJE_HDR_KEY指定映射。实体是类型[TESTCPModel.JE_TRN_HS

这就是发生的事情。我从现有数据库创建了这个实体数据模型。我添加了2个表并重建了Web服务。构建成功。

然后我在两个表之间添加了一个关联。当我尝试重建它失败时显示上面的错误消息!

现在这里是踢球者!我删除了新添加的协会并重建。构建失败并显示相同的错误消息!?我可以摆脱这个错误的唯一方法是,如果我删除第二个表,重建并重新添加第二个表?

我一直在寻找解决这个问题的方法!谢谢Steve

答案

在我的情况下我不允许修改现有的表,但我发现当你在EF4中选中“在模型中包含外键列”的新表时,表中不包含任何外键关系,那么你尝试添加一个关联它会触发此错误。

Defining Constraints in an EF4 model that don’t exist in the database


如果链接的文章消失,解决方案是:

您需要打开关联的属性窗口,然后单击Referential Constraint省略号以进入ref约束对话框。然后为“从属属性”设置选择正确的字段。

另一答案

就我而言,我的数据库管理员已将列名从大写更改为更低。我通过再次更新(更新数据库中的模型)来解决问题。然后,删除以前的大写列。

另一答案

就我而言,我在表中重命名了一个字段并添加了一个主键。在那之后,我得到了那个错误。我去了我的对象/模型列表,在删除它并从数据库刷新后,我再次遇到了同样的错误。我试了好几次但没有。 EF正在生成的类是旧表结构和新表结构之间的混合。

经过一段时间的调查,这就是解决方案:转到您实体的图表。找到您的表格或在您的右侧打开Model Explorer(右键单击图表 - 打开模型资源管理器)。在... Model,... Model.Store中搜索您的模型/表并删除它。之后,再次添加数据库中的表并解决问题。

另一答案

就我而言,另一位开发人员已从数据库中的表中删除了该字段。意识到这一点后,从实体模型中删除表并将其添加回来解决了这个问题。

另一答案

您不能简单地将数据库中的表添加到模型中,然后在模型中创建新关联。默认情况下,它使用独立关联,必须映射到其数据库对应关系=该关系也必须存在于数据库中。你必须model your relation as FK association但它只允许一对一和一对多的关联。关联类型之间的差异是described here

另一答案

当我在更改连接字符串后结束“从数据库更新模型”时,我遇到了这个问题。

通过右键单击实体并打开和关闭键它似乎已导致刷新并修复了问题。这看起来更像是Entity框架的一个bug。

应该注意的是,在这种情况下我使用的是mysql连接器,所以我怀疑它一般都很挑剔。

另一答案

如果模型上的属性不可映射,则可能会出现此错误。

例如,我将一些Linq2Sql转换为EF6并在Binary字段上出错。二进制是System.Data.Linq类型,但对于EF它需要是byte[]。改变它修复了问题。

另一答案

经历过EF 6的类似问题:

exception.InnerException
{"
Entities.EAM.msl(458,10) : error 3004: Problem in mapping fragments starting at line 458:No mapping specified for properties InspectionPdfReportRequest.SyncDate in Set InspectionPdfReportRequests.
An Entity with Key (PK) will not round-trip when:
  Entity is type [Model.Entities.InspectionPdfReportRequest]

Entities.EAM.msl(488,10) : error 3004: Problem in mapping fragments starting at line 488:No mapping specified for properties InspectionReportRequest.SyncDate in Set InspectionReportRequests.
An Entity with Key (PK) will not round-trip when:
  Entity is type [Model.Entities.InspectionReportRequest]
"}
    Data: {System.Collections.ListDictionaryInternal}
    HResult: -2146232032
    HelpLink: null
    InnerException: null

问题结果是我直接在文本编辑器中而不是使用设计器对我的数据库优先EF应用程序的* .edmx文件进行了更改。因此,只需恢复文本更改并使用设计器应用它们,错误就消失了。在设计器中点击保存更新了相关的* .msl文件。

另一答案

我从Linqpad那里得到了这个错误,并且无法弄清楚为什么它会突然发生,以及这是否会在我的应用程序中使用上下文时出现问题。我还删除了最近由新实体创建的类,然后我右键单击.tt文件并点击“run to cursor”重新生成该类。这为我解决了这个问题。

另一答案

从数据库更新模型选项对我不起作用。

所以我需要先删除所有实体,然后再从数据库更新模型,以成功修复解决方案。

另一答案

如果您已在实体上应用映射,请尝试从表中删除该列以解决该问题

以上是关于错误3004:从行开始映射片段时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

添加新实体标量时实体框架 4 映射片段错误

实体框架6不适用于Temporal表

Entity Framework 6 不适用于时态表

在片段java类中使用“this”和getLastSignedInAccount时出现错误[重复]

使用 Kotlin 在片段中引用 RecyclerView 时出现空指针错误

ViewPager - 将数据从片段发送到活动时出现 Android 错误 setCurrentItem(int,boolean)