web-dev-qa-db-ja.com

EFコードの最初の移行シナリオでSeedメソッドが呼び出されるのはいつですか?

私はプロジェクトに不慣れで、シードデータ用に次のクラスがあります。

 internal sealed class Configuration : DbMigrationsConfiguration<DAL.Context>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = true;
        }

そして、シードを開始するためのこのコード:

protected override void Seed(Context context)
    {
        try
        {

私の質問は:Seedメソッドが呼び出されるのはいつですか?ユーザーがupdate-databaseを実行し、ユーザーがデータベースを持っていない場合(基本的には新しいユーザー)、または既存のデータベースを持つユーザーがupdate-database?を呼び出した場合のみ。

20
Michel

シードメソッドは、いくつかの開始データでデータベーステーブルを初期化するために使用されます。移行を実行してデータベースを更新するたびに、シードメソッドが実行されます。ほとんどの場合、データベースを再作成し、データベーステーブルにサンプルデータを入力する必要があるテストフェーズで使用されます。最初にコードの詳細については、このリンク http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/ を参照してください。

13

DbMigrationsConfigurationクラスからの移行Seed()メソッドに関しては、_Update-Database_コマンドが実行されるたびに呼び出されます。また、ユーザーが既存のデータベースを持っているそれを呼び出すとき。

さらに別のSeed()メソッドがあります-それはデータベース初期化子です。データベースの作成時に呼び出され、既存のデータを処理しません(DbMigrationsConfigurationのシードがそれらを処理し、指定されたエンティティが存在するかどうかを確認します)。

詳細については One Unicorn blog を参照してください。

20
magos