4

モデルファーストのアプローチについて疑問に思っています。VS2012 のモデル デザイナーを使用して新しいデータベースを設計したいと考えています。カラーリングやモデルセクションの分割など、モデルデザイナーの新機能は素晴らしいです。最初に新しいデータベースを作成する以外に、モデル デザイナーを使用する目的があることを願っています。

次の手順を実行したいと思います...

  1. モデル デザイナーを使用して、モデルを視覚的に設計およびプッシュし、初期データベースとテーブルを作成します。

  2. テーブルにデータを追加する

  3. モデル デザイナーでテーブルを変更します (フィールドの追加など)。

  4. 変更をデータベースにプッシュする (つまり、データベースを更新する)

  5. ステップ 2 のデータを失わないでください。また、混乱を避けるために、データを失いたくないと言いましたか?

この明らかな必要性 (つまり、データを失うことなくテーブルとそのフィールドを最初から進化させる必要性) は、EF の反復 5 で見落とされていません。

EF に関するこのページ ( http://msdn.microsoft.com/en-us/data/ee712907.aspx ) は、開発者が最初にコーディングすることと最初にモデリングすることの間で同等の選択肢を持っていることを示しています。私には、このページの紹介ビデオが似たような印象を与えます。

モデルの変更時に「DBへの自動プッシュ」を確立するための簡単なメニューオプションまたはそれ以上の方法があればいいと思います. そうすれば、変更が加えられて保存ボタンがクリックされるたびに、「データベースを更新しますか?」というダイアログが表示されます。

コードファーストを使用すると、移行オプションがあることがわかります。モデルファーストで同じものを見つけることができないようです。そして、なぜこれが不可能なのか理解できません...私がコードファーストで書いたであろうすべてのコードは実際に存在します-それはモデルファーストのコード生成によって作成されました.

誰かが簡単な解決策を見つけてくれることを期待して、指を交差させ続けています。おそらく私が見落としていたものであり、このとりとめのない/通気はすべて無駄です. :-)

4

2 に答える 2

0

モデルが変更されたときにデータベースを変更する場合は、コード ファーストを使用する必要があります。それでも、魔法のような自動化されたプロセスではありませんが、変更をスクリプト化する必要があります。

モデルを最初に使用する最善の方法は、毎回新しいデータベースを生成し、Redgate の SQL Compare やVisual Studio Sql Server Database Projectなどのツールを使用して変更スクリプト (DDL) を作成することです。

データベースをモデルと自動的に同期させることは事実上不可能であることを付け加えておきます。一部の変更には手動の介入が必要です。たとえば、フィールドの削除と別のフィールドの追加は、フィールドの名前変更/再入力と区別できません。一部の変更はモデルで簡単に実行できますが、Sql Server でテーブルを再構築するスクリプト (フィールドの順序の変更など)、または変更されたコンテンツと構造の組み合わせ (フィールドを非 null にする、外部キーの追加など) が必要になります。

于 2012-11-11T13:31:12.520 に答える
0

現時点で行うことは次のとおりです。

  1. データベースファイルをコピー... (バックアップ)
  2. EF がモデルに従ってデータベースを再作成できるようにする
  3. テーブルごとに、バックアップから新しいデータベースにレコードをコピーして貼り付けます。

リレーションシップのために特定の順序でコピー ペーストする必要があるため、これはそれほど簡単ではありません。また、列や新しいテーブルの追加、スカラー列の削除、テーブルの削除などの小さな変更にのみ適しています。

しかし、これは、同じテーブル名とリレーションを共有する 2 つのデータベース間でより一般的な移行アプリを作成することによって、後で自動化できる問題に対処するための正しいアプローチの始まりであると確信しています。

関係が同じでない場合、テーブル名が変更された場合、または列名が変更された場合に、より深刻な問題が発生します。

于 2012-12-12T18:35:24.230 に答える