添加新实体后如何播种初始数据?

时间:2017-12-29 12:41:03

标签: asp.net-core aspnetboilerplate

我注意到 MyProject.EntityFrameworkCore 项目中的种子文件夹,其中包含将初始数据播种到数据库的代码。

如果我添加代码以使用我的新实体填充数据库,那么代码将在何处以及如何调用?

.NET Core和完整的.NET Framework版本是否以相同的方式工作?

1 个答案:

答案 0 :(得分:2)

运行:

  1. 在应用程序启动时,使用YourEntityFrameworkModulePostInitialize方法调用:

    public override void PostInitialize()
    {
        if (!SkipDbSeed)
        {
            SeedHelper.SeedHostDb(IocManager);
        }
    }
    
  2. 如果您构建迁移器项目并运行 .exe ,则在MultiTenantExecuterRun方法中调用:

    public void Run(bool skipConnVerification)
    {
        // ...
    
        Log.Write("HOST database migration started...");
    
        try
        {
            _migrator.CreateOrMigrateForHost(SeedHelper.SeedHostDb);
        }
        // ...
    }
    
  3. 如果您添加新代码以填充自定义实体,请务必在添加之前进行检查,例如this

    var defaultEdition = _context.Editions.IgnoreQueryFilters().FirstOrDefault(e => e.Name == EditionManager.DefaultEditionName);
    if (defaultEdition == null)
    {
        // ...
    
        /* Add desired features to the standard edition, if wanted... */
    }
    

    是的,.NET Core和完整的.NET Framework版本的工作方式相同。