添加新实体后如何播种初始数据?
How to seed initial data after adding new entity?
我注意到 MyProject.EntityFrameworkCore 项目中有一个 Seed 文件夹,其中包含将初始数据播种到数据库的代码。
如果我添加代码以使用我的新实体填充数据库,代码将在何处以及如何被调用?
.NET Core 和完整的 .NET Framework 版本是否以相同的方式工作?
是运行:
应用程序启动时,在YourEntityFrameworkModule
的PostInitialize
方法中调用:
public override void PostInitialize()
{
if (!SkipDbSeed)
{
SeedHelper.SeedHostDb(IocManager);
}
}
如果构建 Migrator 项目和 运行 .exe,在 Run
MultiTenantExecuter
的方法:
public void Run(bool skipConnVerification)
{
// ...
Log.Write("HOST database migration started...");
try
{
_migrator.CreateOrMigrateForHost(SeedHelper.SeedHostDb);
}
// ...
}
如果您添加新代码来填充您的自定义实体,请记得在添加之前进行检查,例如 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 版本的工作方式相同。
我注意到 MyProject.EntityFrameworkCore 项目中有一个 Seed 文件夹,其中包含将初始数据播种到数据库的代码。
如果我添加代码以使用我的新实体填充数据库,代码将在何处以及如何被调用?
.NET Core 和完整的 .NET Framework 版本是否以相同的方式工作?
是运行:
应用程序启动时,在
YourEntityFrameworkModule
的PostInitialize
方法中调用:public override void PostInitialize() { if (!SkipDbSeed) { SeedHelper.SeedHostDb(IocManager); } }
如果构建 Migrator 项目和 运行 .exe,在
Run
MultiTenantExecuter
的方法:public void Run(bool skipConnVerification) { // ... Log.Write("HOST database migration started..."); try { _migrator.CreateOrMigrateForHost(SeedHelper.SeedHostDb); } // ... }
如果您添加新代码来填充您的自定义实体,请记得在添加之前进行检查,例如 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 版本的工作方式相同。