我正在为跨平台EF Core本地开发人员寻找改进的解决方案,并将阶段/生产发布到Azure Web / SQL。
当前的本地解决方案:
我有一个ASP.NET核心,EF核心,身份,MVC 6应用程序,使用SQLite在MacOS和Windows上进行本地开发。之所以选择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并继续本地开发
我希望有人可以建议一个更好的解决方案,消除大部分手动步骤,并在我们拥有我们想要迁移而不是删除的登台/生产数据库时处理这个场景。
答案 0 :(得分:1)
似乎唯一正确的解决方案是Startup.cs as described中的环境特定方法。
基本上,您可以创建ConfigureDevelopmentServices()
方法并在那里添加特定于环境的配置。