1

SQL Server 2005 データベース上にある古い VB6 アプリケーションを Entity Framework ソリューションにアップグレードしています。データベースは同じままですが、新しいテーブルを追加しています。Entity Framework をクライアント PC にインストールしたときに既存の構造を維持し、新しいテーブルを 1 つ追加することは可能ですか?

これが Code First の仕組みですか? 他のテーブルが変更されないことを 100% 確信できますか?

4

3 に答える 3

0

SQL Management Studio などのデータベース エディターを使用してテーブルを作成し、それを ef エンティティにマップするか、ef の移行を使用して ef 経由でデータベースを更新するかの 2 つのオプションがあります。

こちらの移行チュートリアルをご覧ください: http://msdn.microsoft.com/en-gb/data/jj591621

于 2012-10-22T02:00:09.067 に答える
0

既存のデータベースがあり、テーブルを1つだけ追加したい場合は、コードファーストに切り替える努力は価値があるとは思いません。

コード ファースト クラスを既存のデータベースにマッピングすることができます (リバース エンジニア コード ファースト)。実際、私はそのワークフローの経験があまりありませんが、できることは知っています。多くの手動マッピング (DataAnnotations または Fluent API を使用) に対処する必要があるため、単一のテーブルを追加すると多くの作業が節約されるため、Entity Framework Database First ワークフローを使用することをお勧めします。

このリンクにはいくつかの有用な情報があります: Arthur Vickers ブログ - 誤って最初にコードを使用しないでください

于 2012-10-22T11:48:06.597 に答える
0

データベース開発チームが、SQL サーバー上のデータベースに必要な変更を行っているため、データベース ファーストのアプローチを使用しています。

したがって、データベースのスキーマが変更されるたびに EDMX を更新する必要があります。

注: VSは常に変更を正しく検出するとは限らないため、1つのテーブルを直接変更してもうまくいきません(この問題については、興味があればSOの詳細をご覧ください)。

したがって、次の回避策を使用しています (すべてのテーブルを再生成します)。

  1. VS 2012で、EDMX ファイルをダブルクリックして開きます。表のグラフィック表現が示されています。

  2. EDMX デザイナーを左クリックし、 CTRL+Aを押してすべてのテーブルを選択します。次に、 DELを押してそれらを削除します。

  3. EDMX デザイナーを右クリックし、コンテキスト メニューで[データベースからモデルを更新 ... ] を選択します。

  4. 更新ウィザードが開きます。「追加」タブで、「テーブル」をチェックし、要件に応じて、「生成されたオブジェクト名を複数化または単数化する」「モデルに外部キー列を含める」、およびオプションで「選択したストアド プロシージャと関数をエンティティ モデルにインポートする」をチェックします。 "。通常、「複数化...」および「外部キー列を含める...」オプションを使用しています。

  5. [完了]をクリックします。Ctrl+Sを押して保存します。

この回避策は私にとってはうまく機能し、モデルを確実に更新するのにわずか 1 分しかかかりません。

于 2014-04-23T11:55:32.517 に答える