首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当部署到生产中时,EF代码第一次移动不播种数据

当部署到生产中时,EF代码第一次移动不播种数据
EN

Stack Overflow用户
提问于 2016-08-09 11:58:18
回答 2查看 3.2K关注 0票数 2

我安装了一个MVC 5应用程序,其中包含了代码优先迁移。在我的本地机器上,我能够运行以下命令并更新数据库:

代码语言:javascript
复制
add-migration SomeMigration
update-database

我已经通过VS部署了我的应用程序,使用文件系统选项将其部署到本地服务器。部署成功发布-没有错误。

当我导航到站点时,我可以看到表是使用创建的,但是没有应用种子数据?下面是我的种子课?

代码语言:javascript
复制
  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错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-09 13:06:33

从您的代码中可以看出,您已决定使用DbMigration。无论何时运行迁移和更新数据库,它都将运行seed方法。

例如,它将被调用:每次执行Nuget中的Update-Database命令时。

或者,也可以从这样的代码中调用它:

代码语言:javascript
复制
  Database.SetInitializer(new MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration());
  ...
  ...
  dbContext.Database.Initialize(true);

或者使用DbMigrator:

代码语言:javascript
复制
 DbMigrator migrator = new DbMigrator(new Configuration());
 migrator.Update();

您必须知道的一件事是,Seed方法将被称为X倍,其中X是数据库迁移的排名/级别。

更多信息:https://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/

必须设置数据库初始化程序。

票数 2
EN

Stack Overflow用户

发布于 2016-08-09 13:24:08

当然,您可以将连接字符串更改为指向PROD并运行迁移,也可以实现代码以在部署时运行迁移。在某些环境中,这可能是可以接受的,但我们的DBA绝不会允许这样做--它们需要我们提供的测试脚本。在我们的过程中,我们遵循了类似于的内容。

种子肯定是一个问题,因为由于某些原因,这不包括在脚本中。我们只是避免在迁移中添加任何种子,而是在数据库初始化器中使用Seed()。这将只在创建数据库时运行,这对于查找表来说是完美的。当我们需要在数据启动和运行后添加或更新数据时,我们在迁移的Up()方法中使用Sql()命令(这些命令都是脚本化的)。

关于错误,“数据库上下文发生了变化。请考虑使用代码优先迁移”--这与种子无关。这通常意味着您还没有将迁移应用到已部署的数据库。当您在本地更改模型时,需要通过脚本或其他方法使用迁移更新已部署的数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38850085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档