从Database Initializer种子方法获取SQL插入语句

时间:2016-12-27 15:52:47

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

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

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

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

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

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

我当然可以:

  1. 在空的现有数据库上运行update-database。 (没有执行种子方法)
  2. 在不存在的数据库上运行update-database。 (种子方法执行)
  3. 在两个数据库之间进行SQL比较并以这种方式获取INSERT查询。

    但是应该有一种更简单的方法吗?

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

1 个答案:

答案 0 :(得分:1)

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

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

相关问题