【发布时间】:2016-08-22 00:00:37
【问题描述】:
我正在寻找一种改进的跨平台 EF Core 本地开发解决方案,将阶段/生产发布到 Azure Web/SQL。
当前本地解决方案:
我有一个使用 SQLite 在 MacOS 和 Windows 上进行本地开发的 ASP.NET Core、EF Core、Identity、MVC 6 应用程序。选择 SQLite 是因为我相信它是 Mac 和 Windows 的唯一稳定的数据库提供程序。每次进行需要数据库迁移的更改时,我们都会运行一个脚本,该脚本
1) 删除本地 SQLite 数据库以及现有的迁移和 ContextModelSnapshot 文件
2) 创建一个“初始”迁移
3) 更新数据库
4) 当我们在 Windows 上使用 IIS Express 时,Windows 版本的脚本将 SQLite 数据库移动到 wwwroot 目录
注意:迁移文件夹在 .gitignore 中被忽略
对于本地开发人员,该解决方案正在运行。
当我发布到 Azure 时,我们:
1) 注释掉 services.AddEntityFramework() .AddSQLite() 连接并切换到 SQLServer 连接
2) 运行脚本以创建新迁移(因为为 SQLite 生成的迁移不适用于 Azure SQL)
3) 运行脚本删除 SQL Azure 上的数据库表
4) 发布
5) 将配置切换回 SQLite 并继续本地开发
我希望有人可以提出更好的解决方案,消除大部分手动步骤,并在我们想要迁移而不是删除的暂存/生产数据库时处理这种情况。
【问题讨论】:
-
您找到解决此问题的方法了吗?我发现自己处于同样的情况......除了脚本部分。
-
@NovaDev 我还没有想出更好的解决方案。