私は最初にエンティティフレームワークコードを使用しており、データシードコードもあります
これで、アプリケーションを実行すると、データベースが生成されますが、ダミーデータがシードされません。すべてのデータを入力するには、EntityFrameworkをもう一度実行する必要があります。
データベースとデータを取得するためにアプリを2回実行する必要がないように、なぜ、どのように修正するのか考えてみてください。
thnx
私のコンテキスト定義ファイルは次のとおりです。
public class Context : DbContext
{
public DbSet<Task> Tasks { get; set; }
public DbSet<Agency> Agency { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
}
}
そして、これが私のシードファイルです
public class Configuration : DbMigrationsConfiguration<Context>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
protected override void Seed(Context context)
{
GenerateTasks(context);
context.SaveChanges();
}
private static void GenerateTasks(Context context)
{
if (context.Task.Any()) return;
context.Task.Add(new Task() { Name = "Received" });
}
}
そして、データベースを作成するためのフックは次のとおりです。
Database.SetInitializer(new MigrateDatabaseToLatestVersion<Context, Configuration>());
var context = new Context();
context.Database.Initialize(true);