私はプロジェクトに不慣れで、シードデータ用に次のクラスがあります。
internal sealed class Configuration : DbMigrationsConfiguration<DAL.Context>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
そして、シードを開始するためのこのコード:
protected override void Seed(Context context)
{
try
{
私の質問は:Seed
メソッドが呼び出されるのはいつですか?ユーザーがupdate-database
を実行し、ユーザーがデータベースを持っていない場合(基本的には新しいユーザー)、または既存のデータベースを持つユーザーがupdate-database
?を呼び出した場合のみ。
シードメソッドは、いくつかの開始データでデータベーステーブルを初期化するために使用されます。移行を実行してデータベースを更新するたびに、シードメソッドが実行されます。ほとんどの場合、データベースを再作成し、データベーステーブルにサンプルデータを入力する必要があるテストフェーズで使用されます。最初にコードの詳細については、このリンク http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/ を参照してください。
DbMigrationsConfiguration
クラスからの移行Seed()
メソッドに関しては、_Update-Database
_コマンドが実行されるたびに呼び出されます。また、ユーザーが既存のデータベースを持っているそれを呼び出すとき。
さらに別のSeed()
メソッドがあります-それはデータベース初期化子です。データベースの作成時に呼び出され、既存のデータを処理しません(DbMigrationsConfiguration
のシードがそれらを処理し、指定されたエンティティが存在するかどうかを確認します)。
詳細については One Unicorn blog を参照してください。