C# 首先使用生产数据库部署实体框架代码
我首先使用实体框架代码开发了一个非常简单的web应用程序。经过数小时的挫折之后,我意识到,即使localdb是SQL Server Express,但在使用“发布”(发布向导)时,它实际上并不适用于生产环境。仅供参考,我使用的是EF 6.1.3、SQL Server 2014、VS 2013和IIS 7 如果我理解正确,当您单击publish with localdb时,您真正要做的就是将localdb数据库复制到IIS 7服务器。当我通过VS迁移更新我的lodaldb数据库时,我不明白为什么我的生产服务器数据库没有被更新。我理解(并且现在相信)它实际上是两个不同的localdb实例,因此不是相同的数据 不管怎样,我已经完成了localdb,并且在我的机器上创建了一个真正的SQL Server 2014 db。我在谷歌上搜索了几个小时,现在不知道该怎么办。我有一些问题:C# 首先使用生产数据库部署实体框架代码,c#,mysql,sql-server,database,entity-framework,C#,Mysql,Sql Server,Database,Entity Framework,我首先使用实体框架代码开发了一个非常简单的web应用程序。经过数小时的挫折之后,我意识到,即使localdb是SQL Server Express,但在使用“发布”(发布向导)时,它实际上并不适用于生产环境。仅供参考,我使用的是EF 6.1.3、SQL Server 2014、VS 2013和IIS 7 如果我理解正确,当您单击publish with localdb时,您真正要做的就是将localdb数据库复制到IIS 7服务器。当我通过VS迁移更新我的lodaldb数据库时,我不明白为什么我
感谢您的帮助,对此表示歉意。如果您在本地使用
SQL express
edition,则可以非常轻松地将其迁移到SQL生产服务器。SQL生产服务器可以是SQL Azure或您自己的生产服务器
A 1。您只需将本地连接字符串
更改为生产连接字符串
并在软件包管理器上运行下面的命令即可。然后,所有未更新的迁移脚本都将在生产环境中运行
PM> Update-Database
a2:我不推荐这种方法
a3:您可以这样做:
Database.SetInitializer(new CreateDatabaseIfNotExists<YourDbContext>());
Database.SetInitializer(新的CreateDatabaseIfNotExists());
您应该有两个连接字符串,一个用于本地数据库,另一个用于生产SQL server
您应该正常开发,例如为您的localdb使用addmigration
和updatedatabase
然后,当您准备发布到live时,您应该将连接字符串更改为live字符串。发布你的网站。然后运行更新数据库
命令。这将使您的live数据库与您刚刚发布的内容同步。谢谢大家的帮助。我是在你们的帮助下弄明白的。对这些步骤感兴趣的人,请看这里。我只想在这里列出一些额外的帮助,但是上面的答案确实回答了这个问题。这假设了我问题中的设置。设置好数据库后,我建议您使用本地数据库进行更新,如下所示:
在VS2013中,转到工具->sql server对象资源管理器->(LocalDb)\v11.0->数据库->[数据库名称]->右键单击->数据比较->架构比较
在右边的下拉列表中,找到您的SQL数据库并测试连接以确保其正常工作
单击比较->更新目标(我不建议生产数据库使用此选项,但如果它是您刚刚创建的暂存数据库,则可以)
如果您转到SSMS(SQLServerManagementStudio),您应该会看到新表以及模式比较工具制作的任何内容。太好了
如果要使用初始值设定项,请继续,只需确保它设置为CreateDatabaseIfNotExists或不会删除数据库的内容。我的意思是,我想你可以使用任何你想要的东西,但这会破坏上述步骤的目的
右键单击您的web项目,单击发布,使用web部署,转到您的数据库,以新数据库为目标,确保选中执行代码优先迁移(这将在新数据库上运行您为localdb所做的所有迁移)。你实际上不必这么做。您也可以不选中此选项,按照Sampath在接受的答案中的建议进行操作
完成了!现在,您已经成功地转换为真正的SQL Server Express DB
要管理数据库,只需按照上面的答案操作即可。或者,再次使用发布向导,确保选中“执行代码优先迁移”并发布 使用初始值设定项
您可以使用初始值设定项,以便在部署后应用程序首次启动时自动对数据库进行架构更改(如果可能,不会丢失数据)
如果发生数据丢失,您将得到一个错误,必须采取适当的措施。即使在数据丢失的情况下,也可以覆盖此项以继续
开发环境设置经验
正如其他答案已经指出的那样,每个环境都需要一个连接字符串,因此LocalDB适合开发,我甚至鼓励使用它,因为它可以创建和初始化(并使用测试数据播种)只需从源代码构建和运行应用程序,即可自动为任何需要开发或调试应用程序的新开发人员提供支持
除了加载解决方案、构建和运行代码库之外,“设置新的开发环境”的体验应该尽可能流畅,手动步骤应该尽可能少,最好是零