57

古いプロジェクトを改善するために、VS2008とFramework3.5を使用することを余儀なくされています-edmxが奇妙な動作を示し、必要に応じてエンティティを更新しないという問題があります。

edmxは上記のエラーをスローしますが、それぞれのテーブルに移動して右クリックすると、「データベースからモデルを更新」に変更はなく、エラーは引き続き発生します。

テーブルを選択してdelを押してダイアグラムからテーブルを削除すると、モデルブラウザでテーブルが.Databaseに表示されなくなりますが、[データベースからモデルを更新]をクリックすると、[追加]リストにiが表示されません。更新リストにまだ表示されているので、テーブルを「更新」することができます(削除したため、テーブルは表示されないはずです!)

4

14 に答える 14

54

Check the xml file of your model, it's probably still in there somewhere. Try deleting it manually from that XML file, then try to update again. Be sure to take backups though.

于 2012-10-08T21:22:22.980 に答える
52

CampaignKey列名をからに変更したときにこの問題が発生しましたCampaignCode。DBを変更した後、.edmxデザイナーに移動し、右クリックして[データベースからモデルを更新]を選択しました。次に、コンパイルするとエラーが発生しました。

エラー11009:プロパティCampaignKeyがマップされていません。

デザイナのテーブルを詳しく見ると、VisualStudioCampaignCodeがDBのように新しいフィールドを作成したことがわかりました。ただし、古いフィールドCampaignKeyがそこに残っていたため、DBに存在しなくなったため、エラーが発生しました。

CampaignKeyこの問題を修正するために、デザイナでテーブルのフィールドを右クリックし、[削除]を選択しました。

その後、を保存し.edmx、コンパイルするとエラーはなくなりました。

于 2013-08-26T20:54:45.820 に答える
3

テーブルまたはビューの列名の大文字と小文字が変わる前に、これと同じエラーが発生しました。たとえば、ビューに「OrderID」という名前の列があり、列名が「OrderId」に変更された場合、「プロパティ「OrderID」はマップされていません」というエラーが発生します。これは、ケースをモデルに存在する方法に戻すことで解決できます。

于 2013-04-03T22:55:29.963 に答える
2

プロジェクトをアップグレードすると、エラーが発生することがあります。

念のため、すべてのデータをバックアップしたことを確認してください。

プロジェクトにエンティティモデルを追加すると、対応する接続​​文字列web.configに追加されます。これで、プロジェクトからモデルを削除しても、接続文字列はweb.configに残ります。

したがって、次の手順を実行します。

  1. モデルを削除する
  2. 対応する接続​​文字列をweb.configから削除します
  3. 次に、モデルを最初から再度追加する手順を実行します。

うまくいけば、それはうまくいくはずです。

于 2012-10-08T11:24:48.993 に答える
2

メモ帳でedmxファイルを開き、間違ったフィールドを削除しました。その後、デザイナーでモデルを再度更新しました

于 2014-04-23T09:18:48.607 に答える
2

この質問はVS2008とモデルの「復元」に関するものでしたが、VS 2015で同じエラー11009が発生したときと同じようにこれを見つけた人は、最初に「データベースからモデルを更新」を試しましたが、その後は役に立ちませんでした。最後に、.edmxデザインのモデルテーブルを右クリックし、[テーブルマッピング]を選択して修正しました。モデルを削除する必要はありませんでした。私のモデルはdbテーブルに関連付けられています。

于 2017-01-31T23:46:11.277 に答える
1

データベースの列名を変更し、モデルからデータベースを更新したときにも同じエラーが発生しました。ソリューションのどこにも元の名前が見つかりませんでした。簡単に解決しました

  1. モデルからテーブルを削除する(テーブルを右クリックして[削除]をクリックします)、
  2. データベースからモデルを更新します(edmxバックグラウンドを右クリックし、[データベースからモデルを更新]、[変更されたテーブルを追加]を選択します)。
于 2015-04-08T17:42:17.907 に答える
0

新しい列を取得するために更新すると、DatabaseFirstモデルのVisualStudio2017とEntityFramework6で同じ問題が発生しました。

上記のすべてを試しましたが、うまくいったのはEDMXを削除して新しいものを生成することだけでした。

于 2017-10-18T15:34:15.057 に答える
0

.edmxにテーブルを追加した後、このエラーが発生しました(エラー3007:行から始まるフラグメントのマッピングの問題...)。

最初に最後に追加されたテーブルを削除し、次にそのテーブルを使用してモデルを再更新しますが、「外部キーを含める」チェックボックスをオンにします。

ここに画像の説明を入力してください

于 2018-03-09T16:45:03.437 に答える
0

私の場合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

これを修正するために私がしたことは次のとおりです。

  1. VisualStudioCodeで.edmxファイルを開きました。
  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

これに対処するために私が見つけた最も簡単な方法は、edmxのマップされていないプロパティを持つモデル/テーブルを見つけることです。それを選択して削除します。edmxを保存してから再度更新し、データベースからモデルを追加し直します。マップされていないプロパティだけを削除しても、うまくいきませんでした。

于 2020-01-14T11:56:18.467 に答える
0

EntityFrameworkエラー-Error 11009: Property is not mapped

このエラーの理由は、DBと.edmxファイルの間に適切な同期がないためです。

解決策1

.edmxファイルからモデルを削除し、再度追加します。

解決策2

.edmxファイルを右クリックして編集します。

次の2つの場所に更新された/新しいプロパティを追加します。

下:

<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

列の名前を変更してデータベースを更新しようとすると、マッピングが失われます。

解決策:1-プロパティがマップされていないテーブルを右クリックします。2-テーブルマッピングオプションを選択します。3-マップされていないプロパティにはマッピングがないことがわかります。 ここに画像の説明を入力してください

于 2021-10-13T10:45:58.843 に答える
0

モデルのxmlファイルにマッピングしてみてください:

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

わたしにはできる。

于 2022-03-01T16:28:14.470 に答える