gpt4 book ai didi

sql-server - 使用 Entity Framework v6.1 Code First 生成 SQL 脚本以播种初始数据

转载 作者:行者123 更新时间:2023-12-05 05:21:34 25 4
gpt4 key购买 nike

在部署使用 Entity Framework v6.1 Code First 的应用程序时,我使用 Update-Database -Script 获取可以针对我的数据库执行的 SQL 语句。我怎样才能生成一个类似的脚本,用初始数据种子我的数据库?我的生产服务器没有安装 Visual Studio,我也不希望它安装在那里。我希望能够向 DBA 提供一个用于创建模式的脚本(我已经如上所述)和一个用于播种初始数据的脚本。

最佳答案

假设您有一个已经播种的数据库,SSMS 中有一个导出功能(仅数据),允许您创建种子数据的脚本。这里有一篇好文章。 ( https://keyholesoftware.com/2016/12/12/creating-a-sql-database-project-for-isolated-development/ )

前提是使用预置数据库作为模型。这是上面链接中 keyholesoftware 信息的重新散列以及我个人认为有用的几条评论。

  • 选择初始种子数据库并右击|任务 |生成脚本
  • 从对象中选择表
  • 使用单个每个表的文件(提供更多控制)
  • 选择目录(沙盒)你保存种子数据的地方(你应该创建一个文件夹在这个位置的 visual studio 项目中。 (如果你想要文件保持原始状态,为您的位置选择一个沙箱,然后然后将它们移动到您完成此部分后创建的文件夹导出。)
  • 在高级部分(高级按钮)更改仅数据的“数据脚本类型”
  • 编写“使用数据库”脚本false(您仍在高级部分执行此操作以导出到您的文件)并完成此部分,关闭高级部分,然后关闭向导。

将这些交给您的 DBA - 另一方面,假设您有 Visual Studio:

  • 回到 VS,(我使用的是 VS2017),显示所有文件(它是解决方案资源管理器中关闭的图标向右)
  • 包括您导出的表(从沙盒中刚刚创建)。您需要设置每个的属性从“构建”到“无”(它是属性中的首选),或者去关闭项目并将项目的 csproj 文件编辑为改变它处理包含文件的方式。我使用 alt-Enter 来打开每个属性并将build设置为无。 (如果发生这种情况,您将看到的错误是“SQL71006”)
  • 如果你有项目中的 postdeploy 文件夹,现在右键单击它(或现在创建它并将文件从“沙箱”复制到此文件夹)。
  • 右击postdeploy 文件夹并添加脚本 | “部署后脚本”
  • 在 VS 中打开脚本。选择“sqlcmd”模式。在这里警告 - 制作确保你的网络允许 sqlcmd 运行 - 有些限制它能力 - 如果您不确定您的能力,请咨询您的系统管理员生产环境保留限制。
  • 为您希望使用种子数据的表添加命令。你可能需要使用 SSMS 在您的表上编写 drop 和 create 脚本,以便您可以绕过可能阻止你运行的限制你的表脚本。我从用户开始——我必须立即从该表中删除约束以便导入。我加了他们在运行部署后脚本之前删除约束并且然后在脚本末尾重新创建约束。
  • 清理并重建您的数据库项目
  • 发布您的项目 - 它应该创建你的数据库并添加种子数据(打开发布 -连接到您要发布到的数据库 - 保存配置文件 -使用默认位置 - 单击发布。
  • 流程应该是能够重复自己。前几次我删除并重新创建数据库,但重新发布当前似乎只是工作很好。

注意 - 如果您遇到 SQL71006 错误,请在此处查看 jamie thompson 的回答: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/47d4124b-82cd-48f9-8ba7-c2ae4c73cbcf/sql71006-why-am-i-getting-this-error?forum=ssdt&prof=required

关于sql-server - 使用 Entity Framework v6.1 Code First 生成 SQL 脚本以播种初始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42677637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com