私の場合sys_user_id
、VisualStudio内のDesignerの既存のテーブルに名前が付けられた新しいスカラープロパティを追加しました。デザイナで多くのエラーが発生したため、データベースからモデルを更新しませんでした。データベース側の特定のテーブルに追加された単一の列をマップしたかっただけです。
問題は、これを行った後、次の例外が発生し始めたことです。
- InnerException {"\ r \ nModels.ShardData.msl(352,10):エラー3004:352行目から始まるフラグメントのマッピングに問題があります:Settable_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
これを修正するために私がしたことは次のとおりです。
- VisualStudioCodeで
.edmx
ファイルを開きました。
- 問題のあるものを検索しました
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キーを押してコードを実行します。期待通りに動き始めました。