Dra*_*eer 37 code-first ef-code-first ef-migrations
所以我设法让Code First运行,它运行良好.
由于我仍在开发应用程序,因此数据库的结构尚未最终确定,因此我需要实现迁移.
我关注了官方博客帖子并获得了Update-Database命令.
但是,这只会更新数据库的SQLExpress版本.数据库的生产版本在Azure上,我在运行时指定连接字符串,因此Update-Database命令不起作用.
所以我的最后一个问题是:如何将自动迁移应用于在运行时指定连接字符串的生产数据库?
WDR*_*ust 52
在包管理器控制台上键入:
Get-Help Update-Database
相关部分:
Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [<Com
monParameters>]
Run Code Online (Sandbox Code Playgroud)
所以你可以做一个Update-Database -ConnectionStringName "MyConnectionString"它应该像魅力一样工作.
您还有一个MigrateDatabaseToLatestVersion数据库初始化程序,如果您设置它(通过Database.SetInitializer()),当您使用正确的连接字符串在生产环境中部署应用程序时,在第一次数据库访问时,它应该自动将您的数据库迁移到最新版本.
我建议谨慎,始终备份.
@Alexy Strakh最近的评论产生了另一个值得回答的论点.
在给定2个ConnectionStrings的情况下,使用Code First Migrations正确配置部署系统.
您不应该从开发框中与生产环境进行交互,但如果您确实需要这样做,那么请将其作为临时解决方案,一旦完成就需要立即恢复.
另一种选择是简单地使用Web.Debug.config和Web.Release.config,并为主web.config提供一个中央模板(这将是您在源代码管理中签入的唯一一个).
只需确保永远不要签入生产密码或个人开发密码(如果有的话).
*您可以使用DEBUG符号来检查应用程序的运行方式.
为什么Entity Framework的EF迁移添加迁移步骤需要数据库连接字符串?
有一个解决方案,我认为从长远来看,劳动密集程度较低.好像您创建了一个具有相同名称的连接字符串
在您的上下文中:base("DBName")
连接字符串名称和初始目录与您指定的DBName匹配,并且不需要每次都输入连接字符串名称.