SQL Server 2005 データベース上にある古い VB6 アプリケーションを Entity Framework ソリューションにアップグレードしています。データベースは同じままですが、新しいテーブルを追加しています。Entity Framework をクライアント PC にインストールしたときに既存の構造を維持し、新しいテーブルを 1 つ追加することは可能ですか?
これが Code First の仕組みですか? 他のテーブルが変更されないことを 100% 確信できますか?
SQL Server 2005 データベース上にある古い VB6 アプリケーションを Entity Framework ソリューションにアップグレードしています。データベースは同じままですが、新しいテーブルを追加しています。Entity Framework をクライアント PC にインストールしたときに既存の構造を維持し、新しいテーブルを 1 つ追加することは可能ですか?
これが Code First の仕組みですか? 他のテーブルが変更されないことを 100% 確信できますか?
SQL Management Studio などのデータベース エディターを使用してテーブルを作成し、それを ef エンティティにマップするか、ef の移行を使用して ef 経由でデータベースを更新するかの 2 つのオプションがあります。
こちらの移行チュートリアルをご覧ください: http://msdn.microsoft.com/en-gb/data/jj591621
既存のデータベースがあり、テーブルを1つだけ追加したい場合は、コードファーストに切り替える努力は価値があるとは思いません。
コード ファースト クラスを既存のデータベースにマッピングすることができます (リバース エンジニア コード ファースト)。実際、私はそのワークフローの経験があまりありませんが、できることは知っています。多くの手動マッピング (DataAnnotations または Fluent API を使用) に対処する必要があるため、単一のテーブルを追加すると多くの作業が節約されるため、Entity Framework Database First ワークフローを使用することをお勧めします。
このリンクにはいくつかの有用な情報があります: Arthur Vickers ブログ - 誤って最初にコードを使用しないでください
データベース開発チームが、SQL サーバー上のデータベースに必要な変更を行っているため、データベース ファーストのアプローチを使用しています。
したがって、データベースのスキーマが変更されるたびに EDMX を更新する必要があります。
注: VSは常に変更を正しく検出するとは限らないため、1つのテーブルを直接変更してもうまくいきません(この問題については、興味があればSOの詳細をご覧ください)。
したがって、次の回避策を使用しています (すべてのテーブルを再生成します)。
VS 2012で、EDMX ファイルをダブルクリックして開きます。表のグラフィック表現が示されています。
EDMX デザイナーを左クリックし、 CTRL+Aを押してすべてのテーブルを選択します。次に、 DELを押してそれらを削除します。
EDMX デザイナーを右クリックし、コンテキスト メニューで[データベースからモデルを更新 ... ] を選択します。
更新ウィザードが開きます。「追加」タブで、「テーブル」をチェックし、要件に応じて、「生成されたオブジェクト名を複数化または単数化する」、「モデルに外部キー列を含める」、およびオプションで「選択したストアド プロシージャと関数をエンティティ モデルにインポートする」をチェックします。 "。通常、「複数化...」および「外部キー列を含める...」オプションを使用しています。
[完了]をクリックします。Ctrl+Sを押して保存します。
この回避策は私にとってはうまく機能し、モデルを確実に更新するのにわずか 1 分しかかかりません。