古いプロジェクトを改善するために、VS 2008とFramework 3.5を使用する状況に追い込まれました-奇妙な動作を示し、必要に応じてエンティティを更新しないedmxの問題があります。
Edmxから上記のエラーがスローされますが、それぞれのテーブルに移動して右クリックします-「データベースからモデルを更新」に変更はありませんが、エラーはまだあります。
テーブルを選択してdelを押して図からテーブルを削除すると、モデルブラウザで.Databaseから消えますが、「データベースからモデルを更新」をクリックすると、「追加」リストにiが表示されません。更新リストにまだ表示されているため、テーブルを「更新」することができます(削除したために発生することはありません!)
モデルのxmlファイルを確認してください。おそらくまだどこかにあります。そのXMLファイルから手動で削除してから、もう一度更新してください。ただし、必ずバックアップを取ってください。
列名をCampaignKey
からCampaignCode
に変更すると、この問題が発生しました。 DBの変更を行った後、.edmx
デザイナー、右クリックしてデータベースからモデルを更新を選択しました。その後、コンパイルするとエラーが発生しました:
エラー11009:プロパティ
CampaignKey
がマップされていません。
デザイナーのテーブルをよく見ると、Visual StudioがDBのように新しいフィールドCampaignCode
を作成したことがわかりました。しかし、古いフィールドCampaignKey
もそこに残されていたため、DBに存在しないためエラーが発生しました。
この問題を修正するために、デザイナーのテーブルのCampaignKey
フィールドを右クリックし、削除を選択しました。
その後、.edmx
、コンパイルされ、エラーはなくなりました。
テーブルまたはビューの列名の大文字と小文字が変わるときに、これと同じエラーが発生しました。たとえば、ビューに「OrderID」という名前の列があり、その列名が「OrderId」に変更された場合、「Property "OrderID" is not mapped」というエラーが表示されます。これは、ケースをモデルに存在する方法に戻すことで解決できます。
メモ帳でedmxファイルを開き、誤ったフィールドを削除しました。その後、デザイナーでモデルを再度更新しました
私はこの質問がVS 2008とモデルの「回復」に関するものであることを知っていますが、VS 2015で同じエラー11009があったときに私がやったようにこれを見つける人のために、最初に「データベースからモデルを更新」を試してみました最後に、.edmxデザインでモデルテーブルを右クリックし、[テーブルマッピング]を選択して修正しました。モデルを削除する必要はありませんでした。私のモデルはdbテーブルに関連付けられています。
時々、プロジェクトをアップグレードするとエラーが発生します。
念のため、すべてのデータをバックアップしてください。
エンティティモデルをプロジェクトに追加すると、対応する接続文字列がweb.configに追加されます=。これで、プロジェクトからモデルを削除しても、接続文字列はweb.configに残っています。
そのため、次の手順を実行します。
うまくいけば、うまくいくはずです。
データベースの列名を変更し、モデルからデータベースを更新したときにも同じエラーが発生しました。ソリューションのどこにも元の名前が見つかりませんでした。私は簡単にそれを解決しました
新しい列を取得するために更新すると、Database FirstモデルのVisual Studio 2017およびEntity Framework 6で同じ問題が発生しました。
上記のすべてを試してみましたが、唯一機能したのはEDMXを削除して新しいものを生成することでした。