35

Entity Framework と Entity Framework の移行を使用して、コード ファーストおよび自動移行を使用してソリューションを実装しています。

以前はうまく機能していましたが、POCO に加えた更新が突然検出されなくなりました。新しいプロパティ (age や email などの非常に単純なプロパティ) を追加して を実行するとUpdate-Database、何も起こらず、次のようになります。

'-Verbose' フラグを指定して、移行中に実行されている SQL コマンドを表示します。
保留中の明示的な移行が 0 個見つかりました: []。
シード データの追加 (Seed メソッドが Migrations Settings クラスでオーバーライドされた場合)。

そして何も更新されません!

なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

2

これには、次の 2 つの理由が考えられます。

  1. コードには他にもいくつかの DbContext があります。そのため、自動移行でどのコンテキストを使用するかを決定できませんでした。
  2. スキーマとコード モデルの比較をループするいくつかの新しい変更があるため、EF は単純に違いを見つけることができませんでした。

一般に、自動移行は実装が簡単で高速ですが、安全に使用できるわけではありません。ある段階では、そのような移行は失敗する可能性があります。

数年前、私は Linq2SQL、 AcroDB Libraryに基づく小さな ORM を開発し、SubSonicの自動移行を使用していました。現在の EF 移行とほぼ同じです。小規模なプロジェクトや、処理または変更する少量のデータには最適でしたが、プロジェクトが 15 以上のテーブルに成長すると、悪夢になりました。そのため、MS は最近、コード駆動型の移行を発表しました。それらはより安全で、プロジェクトにとってより優れています。また、 Migrator.Netを参照することもできます(現時点では、EF よりも少し優れています)。

于 2012-02-25T09:29:27.987 に答える