5つのテーブルを持つデータベースがあります。最初にそれらのテーブルを追加しましたが、関係のコンパイルエラーのためにいくつかを削除することにしました。
今、それらを追加し直したいときは、edmxファイルを開いています->データベースからモデルを更新しています...これらのテーブルは[追加]タブには表示されませんが、[更新]タブにのみ表示されます。
どうすればそれらを元に戻すことができますか?
5つのテーブルを持つデータベースがあります。最初にそれらのテーブルを追加しましたが、関係のコンパイルエラーのためにいくつかを削除することにしました。
今、それらを追加し直したいときは、edmxファイルを開いています->データベースからモデルを更新しています...これらのテーブルは[追加]タブには表示されませんが、[更新]タブにのみ表示されます。
どうすればそれらを元に戻すことができますか?
モデルにテーブルを再度追加するには、最初にモデルからテーブルを削除する必要があります。(テーブルのリストは[model.Store]ツリーに表示されます(「モデルブラウザ」ペインを参照-マウスの右クリックメニューから開くことができます)。「データベースからモデルを更新...」を実行すると、テーブルは次のようになります。 「更新ウィザード」の最初のステップの「追加」タブに表示されます。
完了する手順:
モデル内のテーブルへのすべての参照を削除するには:
私はこれと他の検索オプションを読んでいますが、最終的に私はこの問題をショートアウトするのに役立つ別の答えを見つけました。
エラーメッセージから、テーブル/ビューの1つに主キーがないように見えます。EFは、エンティティキーを生成するために、すべてのテーブルに主キーが必要です。それでもアプリケーションを実行できる場合がありますが、警告に従って主キーを追加することを強くお勧めします。
更新しました
いつかすべてがうまくいったとしても、新しい列を追加したり、データ型を変更したりしても、変更は反映されません。
これを手動で更新するのが最善の方法ですが、それでも希望はありません。@ mathijsuitmegenで提案されているように、テーブルを削除して追加しますが、これが最後のオプションです。
より簡単な解決策はModel Browser
下にあります
[modelName].Store -> Tables/ViewS
表示されていないテーブルを削除します。次に、モデル ""を右クリックするupdate from database
と、テーブルが表示されます。
モデルで削除されたエンティティを再度追加する必要があります。
edmxファイルを編集する以外に、これを行う別の方法があります。
データベースからテーブルを一時的に削除する必要があります。
注:データベースがまだ本番環境にない場合にのみ、これを実行します。
したがって、SQL Server Management Studioで、最初にスクリプトを作成します
。モデルで欠落しているエンティティに対応するテーブルを右クリックします。「スクリプトテーブル」、「作成先」、「新しいクエリエディタウィンドウ」を選択します。
2番目のステップは、テーブルを削除することです。もう一度右クリックして、[削除]を選択します。削除を確認します。
Visual Studioに戻り、モデルの更新を行います。
SQL Server Management Studioに戻り、作成した「作成」スクリプトを実行します。
テーブルがデータベースに再度追加されます。
Visual Studioで、更新を再度実行できるようになりました。テーブルは[追加]タブの下に表示されます!!!
モデルから削除する必要がある上記の参照のリストに加えて、テーブルに他のテーブルとの連想関係がある場合は、AssociationSetMapping要素も削除することを検討してください。