我有一个设置代码优先迁移的MVC 5应用程序。在我的本地计算机上,我能够运行以下命令,并且数据库已更新:
add-migration SomeMigration
update-database
我已经使用文件系统选项通过VS部署了我的应用程序,因为该应用程序已部署到本地服务器。部署成功发布-没有错误。
当我导航到该站点时,可以看到使用SQL Server Managment Studio创建了表,但是没有应用种子数据吗?以下是我的种子课程?
namespace MyApp.Migrations
{
internal sealed class Configuration :
DbMigrationsConfiguration<ApplicationDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
MigrationsDirectory = @"Persistence\Migrations";
}
protected override void Seed(ApplicationDbContext context)
{
// Seed stuff
}
}
}
我如何获取它应用种子数据,当我在本地计算机上对模型进行更改并重新部署时database context has changed. Please consider using code first migration
出现错误?
从您的代码中可以看到您已决定使用DbMigration。每当您运行迁移并更新数据库时,它将运行种子方法。
例如,它将被称为:每当Update-Database
执行Nuget中的命令时。
另外,也可以从如下代码中调用它:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration());
...
...
dbContext.Database.Initialize(true);
或使用DbMigrator:
DbMigrator migrator = new DbMigrator(new Configuration());
migrator.Update();
您必须知道的一件事,Seed方法将称为X倍,其中X是数据库迁移的等级/级别。
更多信息:https://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/
!!您必须设置数据库初始化程序!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句