不同环境的实体框架数据迁移

2024-01-15

有一些特定于开发/测试/生产环境的基础数据。

我们现在在所有环境中使用实体框架迁移,但不知道如何以指定仅在开发/测试/生产上执行的迁移的方式为特定环境指定迁移。

这可以在 Fluent Migrator 中使用标签属性来完成。但是实体框架呢?


当您说“基础数据”时,我假设您的意思是为每个环境播种。迁移提供了播种机制 https://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-3为了这。在 Seed() 中,您可以像在常规代码中一样区分环境。我们喜欢使用 Web.config 转换设置:

protected override void Seed(BookService.Models.BookServiceContext context)
{
    if (ConfigurationManager.AppSettings["DeployEnvironment"] == "UAT")
    {
        context.Authors.AddOrUpdate(x => x.Id,
            new Author() { Id = 1, Name = "Test User" },
        );
    }
    else if (ConfigurationManager.AppSettings["DeployEnvironment"] == "PROD")
    {
        context.Authors.AddOrUpdate(x => x.Id,
            new Author() { Id = 1, Name = "Production User" },
        );
    }
}

另一种选择是编译器指令:

protected override void Seed(BookService.Models.BookServiceContext context)
{
#if DEBUG
    context.Authors.AddOrUpdate(x => x.Id,
        new Author() { Id = 1, Name = "Test User" },
    );
#else
    context.Authors.AddOrUpdate(x => x.Id,
        new Author() { Id = 1, Name = "Production User" },
    );
#endif
}

就应用迁移本身而言,我们遵循这个流程 https://msdn.microsoft.com/en-US/data/dn481501开发中。当我们准备好部署到 UAT 时,我们只需将连接字符串指向 UAT 并运行迁移,或者我们也可以创建一个脚本 http://bartwullems.blogspot.com/2013/05/generate-sql-script-from-entity.html更新数据库。在 PROD 中,我们做.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同环境的实体框架数据迁移 的相关文章

随机推荐

  • vimscript 中可视块模式的返回值是多少?

    我试图通过使用字典映射模式函数的返回值来在状态行上显示vim的当前模式 let g modeMap n Normal i Insert R Replace v Visual V Visual Line
  • TSQL Shred XML - 使用命名空间

    这是我之前关于同一代码块的问题的链接 其中包含一个工作碎片示例 https stackoverflow com questions 2992903 tsql shred xml is this right or is there a bet
  • 如何在 OmniXML 中创建简单的 XML

    我想创建这个结构 xml
  • C++生态系统有函数式语言吗?

    Java有Scala http www scala lang org NET 有F http research microsoft com fsharp 这两种语言都高度集成到各自的 Java 和 NET 平台中 例如 类可以用 Scala
  • 我应该如何为 CodeIgniter 选择身份验证库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我看到有a few http codeigniter com wiki Category Libraries Authentication
  • 如何更改 Twitter 的分享按钮高度?

    如何更改 Twitter 的图标高度 我有另一个自定义图像 但高度保持不变 我该如何解决 https dev twitter com docs tweet button https dev twitter com docs tweet bu
  • 调试 valgrind 生成的核心

    Valgrind 生成了一个 vgcore NNNN 文件 如何使用 GDB 调试核心 我是否需要使用原始可执行文件并提供核心 还是有其他方法可以做到这一点 使用 valgrind 作为 root 可执行文件似乎不起作用 并且直接在 GDB
  • Pthread Thread-Local-Singleton,什么时候释放TLS Key?

    我使用 pthread TLS 实现了一种 线程本地单例 我想知道在这种情况下如何 以及何时 删除 pthread key t 因为就像现在一样 TLS 密钥使用的内存永远不会释放 d 其预期用法是让类 A 从 ThreadLocalSin
  • 此操作的超级权限

    我创建我的数据库和用户navid在我的共享服务器中cpanel databases gt mySQL Databases gt add new user 然后为用户选择所有权限navid 我正在导入mydatabase sql当我遇到这个错
  • iOS Storyboards/NIB 底层剖析。它们是如何实施的?

    我开始对 iOS 中的 NIB Storyboards 机制的底层细节感兴趣 我想更多地了解它们的实现 我对开发自己的机制感兴趣 我找到了一些关于NIB 文件 https developer apple com library mac do
  • psutil 已满足要求

    我正在尝试使用命令 pip install psutil 安装 lib psutil 当我运行这段代码时 我得到了这个 Requirement already satisfied psutil in opt conda lib python
  • Heroku 将数据库从一个应用程序传输到另一个应用程序

    我需要将数据库从 app 1 传输到 app 2 我在 app 1 上创建了备份 然后跑 heroku pg 备份恢复 HEROKU POSTGRESQL COLOR app app 2heroku pgbackups url app ap
  • Django 收到意外的关键字参数“id”

    我正在尝试在 Django 中创建电话簿 我的网址 py urlpatterns url r views people list name people list url r P
  • std::string_view 到底比 const std::string& 快多少?

    std string view http en cppreference com w cpp string basic string view已经发展到 C 17 并被广泛推荐使用它来代替const std string 原因之一是性能 有
  • 快速标签仅留下边框

    一起早上好 i have a tableview like this 例子 在第一单元格中 我的右侧有一个红色文本标签 从它的左边我包括一个像灰线一样的图像 使用此代码我可以设置完整的绿色边框 cell Label layer border
  • 一起工作时间最长的一对员工——Python/Pandas

    我最近必须编写一个代码 返回在一个共同项目上合作最多的一对员工 这是我想出的代码 注1 Null 被程序读取为 今天 注 2 数据来自以下形式的 txt 文件 EmpID ProjectID DateFrom DateTo 1 101 20
  • 使用 Mongo-Hadoop 连接器通过 Apache Spark 更新 MongoDb 中的集合

    我想通过 Java 中的 Spark 更新 MongoDb 中的特定集合 我正在使用用于 Hadoop 的 MongoDB 连接器 https github com mongodb mongo hadoop检索并保存信息阿帕奇火花 http
  • git rebase 合并冲突

    我分叉了一个 github 存储库并在我的 github 存储库上工作 我已经提出了拉取请求并且已经完成 之后上游又有了一些提交 所以现在我想重新设置基准 我想这就是我必须做的 但我遇到了这些合并冲突 First rewinding hea
  • PostgreSQL 用户列表

    我想获取 psql 中某个数据库的用户列表 例如 template0 用户是谁 或者对于 template1 数据库 那里的用户是谁 已经尝试过 du no database is Listed not Users Select from
  • 不同环境的实体框架数据迁移

    有一些特定于开发 测试 生产环境的基础数据 我们现在在所有环境中使用实体框架迁移 但不知道如何以指定仅在开发 测试 生产上执行的迁移的方式为特定环境指定迁移 这可以在 Fluent Migrator 中使用标签属性来完成 但是实体框架呢 当