在我的例子中,我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
我为解决此问题所做的工作如下:
.edmx
在 Visual Studio Code 中打开文件;
- 搜索违规行为
table_name
;
- 在适当的地方添加了缺失的映射。
它在 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 运行代码。它开始按预期工作。