【问题标题】:Obtain SQL insert statements from Database Initializer seed method从 Database Initializer 种子方法获取 SQL 插入语句
【发布时间】:2017-05-11 22:02:57
【问题描述】:

我已阅读此blog:它解释了数据库初始化程序种子和迁移种子方法之间的区别。

我正在开发一个使用代码优先实体框架并启用迁移的项目。存在数据库初始化程序种子,它将在创建数据库时在我的本地数据库上执行。

但是在生产环境中,我没有权限自己添加数据库。我需要在新创建的空数据库上从包管理器控制台运行 update-database -script,然后手动执行迁移。

由于我无法从我的开发环境直接访问生产数据库服务器,因此我在大声思考:将数据库初始化程序重写为迁移种子没有任何好处。

如何获取在 Database Initializer 种子方法中定义的脚本 (SQL),即插入语句?

我当然可以:

  1. 在现有的空数据库上运行更新数据库。 (不执行种子方法)
  2. 在不存在的数据库上运行更新数据库。 (执行种子方法)

在 2 个数据库之间进行 SQL 比较并以这种方式获取 INSERT 查询。

但是应该有更简单的方法吧?

为什么update-database -script 首先不显示来自数据库初始化程序种子方法的 INSERT 语句?

【问题讨论】:

    标签: c# sql-server entity-framework seeding


    【解决方案1】:

    我不确定Entity Framework Logging and Intercepting Database Operations 中描述的日志记录是否会从 DatabaseInitializer 捕获 SQL。如果没有,您可以尝试找到第 3 方分析器来捕获您的 SQL。就个人而言,我使用ORM Profiler,它可以捕获所有内容,但它不是免费的。

    是的,应该有更简单的方法。

    【讨论】:

    • 这可能不是我在这种特定情况下寻找的内容,但我已将信息添加到书签。我不知道这个功能存在。我可能会在不久的将来使用它来记录日志。
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    相关资源
    最近更新 更多