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

Ste*_*haw 36 database mapping entity-relationship entity-framework edmx

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

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

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

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

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

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

小智 35

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

在EF4模型中定义数据库中不存在的约束


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

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

  • 好答案。我遇到了同样的问题,在阅读了这个答案后,我没有在属性窗口上工作,而是删除了与我的表相对应的类,并向模型发出了更新命令。它重新创建了对象类并修复了外键问题。现在它是完美的。感谢回答。 (2认同)

Gra*_*ght 25

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


Len*_*rri 7

我现在遇到了这个问题...需要添加一个标量属性,比如说custom_property使用 Visual Studio 中的设计器添加到现有表。

我可以从数据库更新模型,但这不是一个选择。它在模型中造成了很多错误。这是一个巨大的数据库模型,我需要添加此属性的表可能有 30 多个关系。我只想映射custom_property添加到名为 的表中的这个新列custom_table

直接在设计器中添加标量属性后,抛出以下异常:

  • InnerException {"\r\nModels.MyDB.msl(352,10) : 错误 3004: 从第 352 行开始的映射片段出现问题: 在 Set custom_table 中没有为属性 custom_table.custom_property 指定映射。\r\n具有键 (PK) 的实体) 在以下情况下不会往返:\r\n 实体类型为 [MyDB.custom_table]\r\n"} System.Exception {System.Data.Entity.Core.MappingException}

Error ListVS 中显示的是:Error 11009: Property ' ' is not mapped

我为解决此问题采取的步骤:

  1. .edmx在 Visual Studio Code 中编辑文件;
  2. 找了custom_table;
  3. .edmx用映射补充了XML 代码。

这些是我必须添加映射的地方:

<EntityType Name="custom_table">
    <Key>
        <PropertyRef Name="some_id" />
    </Key>
    <Property Name="some_id" Type="int" Nullable="false" />
    <Property Name="other_id" Type="int" />
    ...
    <Property Name="custom_property" Type="int" Nullable="true" /> <= THIS WAS ADDED BY ME
</EntityType>
Run Code Online (Sandbox Code Playgroud)

<EntitySetMapping Name="custom_table">
  <EntityTypeMapping TypeName="MyDB.custom_table">
    <MappingFragment StoreEntitySet="custom_table">
      <ScalarProperty Name="some_id" ColumnName="some_id" />
      <ScalarProperty Name="other_id" ColumnName="other_id" />
      ...
      <ScalarProperty Name="custom_property" ColumnName="custom_property" /> <= THIS WAS ADDED BY ME
    </MappingFragment>
  </EntityTypeMapping>
</EntitySetMapping>
Run Code Online (Sandbox Code Playgroud)


Lad*_*nka 2

您不能简单地将数据库中的表添加到模型中,然后在模型中创建新的关联。默认情况下,它使用独立关联,该关联必须映射到其数据库对应项=该关系也必须存在于数据库中。您必须将关系建模为 FK 关联,但它仅允许一对一和一对多关联。此处描述了关联类型之间的差异。