0

Entity Framework (4.3) 移行を使用しています。データを追加するために移行後に呼び出されることになっている Seed メソッドを定義する通常の構成クラスがあります。

internal sealed class SettingsConfig : DbMigrationsConfiguration<My.Assembly>
{
    public SettingsConfig()
    {
        AutomaticMigrationsEnabled = false;
    }

    protected override void Seed(ScannerAreaManager.DataAccess.CableSenseLocal context)
    {
        //  This method will be called after migrating to the latest version.
    }
}

データベースに何が起こっているかを確認するために、SQL Server プロファイラーを実行しています。

ここで、データベースを削除し、F5 (デバッガーに接続) を使用して Visual Studio からこのアプリケーションを実行すると、データベースが作成され、移行が実行され、seed メソッドが呼び出されてデータベースにデータが追加されていることがわかります。

その後、データベースを削除し、Ctrl-F5 (デバッガーにアタッチされていない) を使用してアプリケーションを再度実行すると、データベースが作成され、移行が実行されますが、シード メソッドは呼び出されません。

確かにこれは設計によるものではありませんか?何か案は?

4

1 に答える 1

1

残念ながら、これはコードが初期化される前にコンテキストから読み取ろうとしたことが原因でした。ただし、デバッグ モードで実行されていない場合のみです。

EF は実際に期待どおりに動作します。移行の実行後にシード メソッドが呼び出されます。

于 2012-04-25T11:20:35.910 に答える