1

我有一个ASP.NET MVC 3应用程序使用实体框架(4.3.1)代码第一个数据库。现在我想创建一个包含数据库,Visual Studio 2010生成的应用程序包和一个脚本的全面zip文件,该文件将所有内容都部署到带有IIS7和SQL Server 2008的Windows 2008服务器,并包含一个准备好的(但是空的)数据库。部署实体框架代码第一个数据库

我没有预见到应用程序包的部署有任何问题,但我不确定在部署数据库时使用什么方法。目标环境已经有一个空的数据库已经分配给我,但我被告知,删除和创建数据库是好的。

从我读过的,我可以做一个直接的.mdf和.ldf文件的副本到服务器,然后设置我的连接字符串指向该特定的文件,但这种方法有点忽略数据库已经为我创建(或至少命名)。另一种方法是使用现有的.mdf以脚本在服务器上创建数据库。我唯一的问题是,我想保留分配给我的数据库名称。

+1

除了@MattSavage很好的答案,你也应该知道,如果你使用的是共享主机解决方案,在大多数情况下将数据库文件移动到远程服务器是不可能的。即使保留您的数据库名称可能不会发生。这是因为出于安全原因,您不会被分配到dbcreator甚至有时甚至是db_owner角色。 – lucask

回答

8

我通常使用SQL Management Studio在本地连接到我的开发数据库,​​右键单击数据库,选择“任务” - >“生成脚本”。然后我选择整个数据库或者只是我想保留的表格,点击下一步,然后点击高级按钮,并确保我正在脚本化“模式和数据”,然后生成一个可以运行的SQL脚本生产数据库,因此保留表格结构和dev数据库中的数据。很明显,如果你不想保存数据,那么只需编写Schema。然后,将您的应用程序的连接字符串指向新的生产环境数据库,并且您很好。

+0

谢谢马特,这确实是我正在寻找的东西。我现在唯一的问题是如何指定这个创建脚本将在哪里创建新的数据库或将获得哪个数据库名称。在创建的脚本中,第一行读取'USE [C:\ SolutionName \ ProjectName \ APP_DATA \ ASPNETDB.MDF]',我是否正确地认为这将查找该位置的数据库并覆盖/重新创建它?如果我希望数据库具有我的项目名称而不是通用的ASPNETDB名称,我是否必须重命名mdf本身,还是可以使用Management Studio执行此操作? – Lilienthal

+0

我的愚蠢:我只是不得不改变附加数据库的名称来做到这一点,现在我已经掌握了所有的工作。附加数据库的名称基于.mdf路径的事实让我想到我也需要.mdf本身,因为某些原因。所以你的回答指向了正确的方向。请注意,尽管在我的SQL Management Studio版本中没有高级按钮,但通过将“脚本数据”选项设置为True来保留数据。 – Lilienthal

相关问题