9

Visual Studio 2010 EF 4 では、新しい列をデータベース テーブルに追加し、.edmx で [データベースからモデルを更新] をクリックすると、すべてうまくいきました。

Visual Studio 2012 EF 5 でテーブルを変更し、[データベースからモデルを更新] をクリックすると、個々のテーブルへの変更が反映されなくなりました。

何か不足していますか...それともVS2012の新しい「機能」ですか?

更新 列が追加されたテーブルを取得して .EDMX ファイルに反映させる唯一の方法は、テーブルを削除してから「データベースからモデルを更新」すると、追加された列が取得されます。ただし、追加されたテーブルが左側に離れているため、元の位置に戻す必要があります。大したことはありません。

4

4 に答える 4

8

はい、これはVS2012でも機能します。デフォルトのコード生成を使用していますか、それともTTファイルがありますか?EDMXに追加されているが、クラスファイルが更新されていない可能性があります。

ソリューションエクスプローラーでEDMXファイルまたは関連するTTファイルを右クリックし、[カスタムツールの実行]を選択して、再生成されていることを確認してください。

于 2012-10-24T17:17:36.350 に答える
2

EFモデルを使用することと、データベースで下線を引く方法には違いがあります。「データベースからモデルを更新」するときに、エンティティ/テーブルがすでにデータモデルにインポートされている場合は、エンティティを更新します。このプロセスでは、データベーススキーマが既存のデータモデルに自動的にマップされませんが、EFモデルのエンティティにプロパティを追加してから、プロパティをデータベース列にマップできます(これは、EFが自動的に行うことです。通常どおり削除および更新します)。

最初にエンティティを削除すると、更新EFは、テーブル/エンティティが以前にインポートされていないことを認識しているため、すべてのデータベース列が自動的にマップされます。

要約すると、エンティティを削除する必要はありませんが、単純なエンティティの場合は削除する方が簡単です。

于 2012-10-25T10:16:01.987 に答える
0

同様/同じ問題があり、モデルからテーブルを削除し、[データベースからモデルを更新] を選択しました。これもうまくいかず、テーブルに追加した新しい列にアクセスできませんでした。

ただし、モデルのデザイナー ファイルをソース管理 (Vault Professional) から手動でチェックアウトし、モデルからテーブルを削除して、データベースからモデルを再度更新すると、機能しました。したがって、VS は、この特定のインスタンスでモデルのデザイナー ファイルをチェックアウトする方法を知らない可能性があります。

于 2013-09-10T13:01:28.530 に答える
0

エンティティの1つを削除し、データベースから再度更新したいために発生します.モデルはこのエンティティをキャッシュしているため、テーブルを更新する選択肢がありません.モデルページを右クリックし、モデル ブラウザ オプションを選択します。右側にモデル ブラウザが表示されます。更新するエンティティをエンティティ タイプ フォルダから削除します。

于 2014-12-29T18:09:40.880 に答える