57

为了改进一个较旧的项目,我被迫使用 VS 2008 和 Framework 3.5 - 我遇到了 edmx 显示奇怪行为并且没有根据需要更新实体的问题。

edmx 向我抛出了上述错误,但是当我转到相应的表并右键单击它时 - “从数据库更新模型”没有任何变化,错误仍然存​​在。

如果我通过选择它并按del从图表中删除表,然后在模型浏览器中它从.Database中消失但是当单击“从数据库更新模型”时我在“添加”列表中看不到我,所有我可以做的是“刷新”表,因为我仍然在刷新列表中看到它(这不应该发生,因为我删除了它!)

4

14 回答 14

54

检查模型的 xml 文件,它可能还在某处。尝试从该 XML 文件中手动删除它,然后再次尝试更新。不过一定要备份。

于 2012-10-08T21:22:22.980 回答
52

当我将列名从 更改为 时,我遇到了这个CampaignKey问题CampaignCode。更改数据库后,我去了.edmx设计器,右键单击并选择Update Model from Database。然后,当我编译时,我得到了错误:

错误 11009:属性CampaignKey未映射。

仔细查看设计器中的表格,我发现 Visual Studio 已经CampaignCode像在数据库中一样创建了新字段。但它也将旧字段留CampaignKey在了那里,导致错误,因为它不再存在于数据库中。

为了解决这个问题,我在设计器的表中右键单击了CampaignKey字段并选择了Delete

之后我保存了.edmx,编译后错误消失了。

于 2013-08-26T20:54:45.820 回答
3

在表或视图上的列名更改大小写之前,我也遇到过同样的错误。例如,如果视图有一个名为“OrderID”的列,然后将列名更改为“OrderId”,那么它将给出错误“属性“OrderID”未映射”。这可以通过将案例更改回模型中的存在方式来解决。

于 2013-04-03T22:55:29.963 回答
2

我在记事本中打开了 edmx 文件并删除了不正确的字段。然后我在设计器中再次更新了模型

于 2014-04-23T09:18:48.607 回答
2

有时,升级项目会引发错误。

只需确保您已备份所有数据,以防万一。

当我们将实体模型添加到我们的项目中时,它会在web.config中添加一个相应的连接字符串。现在,当您从项目中删除模型时,即使这样,连接字符串仍然存在于 web.config 中。

因此,请采取以下步骤:

  1. 删除模型
  2. 从 web.config 中删除对应的连接字符串
  3. 现在,执行从头开始重新添加模型的步骤。

希望它应该工作。

于 2012-10-08T11:24:48.993 回答
2

我知道这个问题是关于 VS 2008 和“恢复”模型的,但是对于像我在 VS 2015 中遇到相同的错误 11009 时发现此问题的任何人,我首先尝试“从数据库更新模型”无济于事,然后我最终通过右键单击 .edmx 设计中的模型表并选择表映射来修复它。我不必删除模型。我的模型与一个 db 表相关联。

于 2017-01-31T23:46:11.277 回答
1

当我更改数据库中的列名并从模型更新数据库时,我遇到了同样的错误。我无法在解决方案的任何地方找到原始名称。我通过简单地解决了它

  1. 从模型中删除表(右键单击表,点击删除),
  2. 从数据库更新模型(右键单击 edmx 背景,选择“从数据库更新模型”,添加更改的表)。
于 2015-04-08T17:42:17.907 回答
0

我在 Database First 模型上使用 Visual Studio 2017 和 Entity Framework 6 时遇到了同样的问题,在刷新它以获取新列时。

我尝试了上述所有方法,但唯一有效的是删除 EDMX 并生成一个新的。

于 2017-10-18T15:34:15.057 回答
0

我发现处理这个问题的最简单方法是在 edmx.xml 中找到具有未映射属性的模型/表。选择它并删除它。保存您的 edmx,然后再次更新,从数据库中重新添加模型。仅删除未映射的属性对我不起作用。

于 2020-01-14T11:56:18.467 回答
0

在将表添加到 .edmx 后,出现此错误(错误 3007:从行开始映射片段时出现问题...)

首先,我删除最后添加的表,然后使用该表重新更新模型,但选中“包含外键复选框:

在此处输入图像描述

于 2018-03-09T16:45:03.437 回答
0

实体框架错误 -Error 11009: Property is not mapped

此错误的原因是 DB 和.edmx文件之间没有正确同步。

解决方案 1

.edmx文件中删除模型并重新添加。

解决方案 2

通过右键单击编辑.edmx文件。

在以下两个位置添加更新/新属性;

在下面:

<EntityType Name="TableName"> <Property Name="SaleFinYear" Type="varchar" MaxLength="50" />

在`:

<MappingFragment StoreEntitySet="TableName"> <ScalarProperty Name="SaleFinYear" ColumnName="SaleFinYear" />

有关屏幕截图的更多详细信息,请查看 -这里

于 2020-05-16T16:24:45.297 回答
0

尝试将其映射到模型的 xml 文件中:

<ScalarProperty Name="CampaignKey" ColumnName="CampaignKey" />

这个对我有用。

于 2022-03-01T16:28:14.470 回答
0

在我的例子中,我sys_user_id在 Visual Studio 的设计器中添加了一个名为现有表的新标量属性。我没有从数据库中更新模型,因为这会导致设计器出现很多错误。我只想映射添加到数据库端给定表的单个列。

问题是,在这样做之后,我开始收到以下异常:

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

在 Visual Studio 中,Error List窗口中显示的是:Error 11009: Property ' ' is not mapped

我为解决此问题所做的工作如下:

  1. .edmx在 Visual Studio Code 中打开文件;
  2. 搜索违规行为table_name
  3. 在适当的地方添加了缺失的映射。

它在 2 个地方缺少映射:

<EntityType Name="table_name">
    <Key>
        <PropertyRef Name="user_id" />
    </Key>
    <Property Name="user_id" Type="int" Nullable="false" />
    <Property Name="tenant_id" Type="int" />
    ... ALL OTHER COLUMNS HERE ...
    <Property Name="sys_user_id" Type="int" Nullable="true" /> <= WAS MISSING THIS AND SO I HAD TO ADD IT BY HAND
</EntityType>

<EntitySetMapping Name="table_name">
  <EntityTypeMapping TypeName="ShardDB.table_name">
    <MappingFragment StoreEntitySet="table_name">
      <ScalarProperty Name="user_id" ColumnName="user_id" />
      <ScalarProperty Name="tenant_id" ColumnName="tenant_id" />
      ... ALL OTHER COLUMNS HERE ...
      <ScalarProperty Name="sys_user_id" ColumnName="sys_user_id" /> <= WAS MISSING THIS AND SO I HAD TO ADD IT BY HAND
    </MappingFragment>
  </EntityTypeMapping>
</EntitySetMapping>

在 Visual Studio Code 中更改它并返回到 Visual Studio 后,它要求我重新加载.edmx文件,因为它已被修改。重新加载,然后按 F5 运行代码。它开始按预期工作。

于 2019-09-23T17:01:52.893 回答
0

当您更改列的名称并尝试更新到数据库时,它会丢失其映射。

解决方案:1-右键单击属性未映射的表。2-选择表映射选项。3-您会发现未映射的属性没有映射。 在此处输入图像描述

于 2021-10-13T10:45:58.843 回答