Asp.net mvc 3 部署实体框架代码优先数据库

Asp.net mvc 3 部署实体框架代码优先数据库,asp.net-mvc-3,sql-server-2008,entity-framework-4.1,ef-code-first,Asp.net Mvc 3,Sql Server 2008,Entity Framework 4.1,Ef Code First,我有一个ASP.NET MVC 3应用程序,使用实体框架4.3.1代码优先数据库。现在,我想创建一个全面的zip文件,其中包含数据库、VisualStudio2010生成的应用程序包以及一个脚本,用于将所有内容部署到带有IIS7的Windows 2008服务器和带有准备好但为空的数据库的SQL server 2008 我预计应用程序包的部署不会出现任何问题,但我不确定在部署数据库时使用什么方法。目标环境已经有一个分配给我的空数据库,但我被告知删除和创建数据库是可以的 根据我所读的内容,我可以直接

我有一个ASP.NET MVC 3应用程序,使用实体框架4.3.1代码优先数据库。现在,我想创建一个全面的zip文件,其中包含数据库、VisualStudio2010生成的应用程序包以及一个脚本,用于将所有内容部署到带有IIS7的Windows 2008服务器和带有准备好但为空的数据库的SQL server 2008

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


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

我通常使用SQL Management Studio本地连接到我的开发数据库,右键单击数据库,选择任务->生成脚本。然后,我选择整个数据库或仅选择要保留的表,单击“下一步”,然后单击“高级”按钮,确保我正在编写架构和数据的脚本,然后生成可以在生产数据库上运行的sql脚本,从而保留表结构和dev数据库中的数据。显然,如果不想保留数据,只需编写模式脚本即可。然后,将应用程序的连接字符串指向新的生产环境数据库,就可以了。

我通常使用SQL Management Studio在本地连接到开发数据库,右键单击数据库,选择任务->生成脚本。然后,我选择整个数据库或仅选择要保留的表,单击“下一步”,然后单击“高级”按钮,确保我正在编写架构和数据的脚本,然后生成可以在生产数据库上运行的sql脚本,从而保留表结构和dev数据库中的数据。显然,如果不想保留数据,只需编写模式脚本即可。然后,将应用程序的连接字符串指向新的生产环境数据库,您就可以开始了。

除了@MattSavage nice answer,您还应该知道,如果使用共享托管解决方案,在大多数情况下,将数据库文件移动到远程服务器是不可能的。即使保留您的数据库名称也可能不会发生。这是因为由于安全原因,您不会被分配到dbcreator,有时甚至不会被分配到db_所有者角色。除了@MattSavage nice answer,您还应该知道,如果您使用共享托管解决方案,在大多数情况下,将数据库文件移动到远程服务器是不可能的。即使保留您的数据库名称也可能不会发生。这是因为出于安全原因,您不会被分配到dbcreator,有时甚至不会被分配到db_所有者角色。谢谢Matt,这确实是我想要的。我现在唯一的问题是如何指定这个创建脚本将在何处创建新数据库,或者它将获得什么数据库名称。在创建的脚本中,第一行读为USE[C:\SolutionName\ProjectName\APP\u DATA\ASPNETDB.MDF],我是否正确地认为这将在该位置查找数据库并覆盖/重新创建它?如果我想让数据库具有我的项目名称,而不是通用的ASPNETDB名称,那么我必须重命名mdf本身,还是可以使用managementstudio进行重命名?我太傻了:我只需要更改附加数据库的名称就可以做到这一点,现在我已经让所有东西都正常工作了。附加数据库的名称基于.mdf的路径这一事实让我觉得出于某种原因,我也需要.mdf本身。所以你的回答为我指明了正确的方向。请注意,尽管在我的SQL Management Studio版本中没有“高级”按钮,但保存数据是通过将“脚本数据”选项设置为True来完成的。谢谢Matt,这确实是我想要的。我现在唯一的问题是如何指定这个创建脚本将在何处创建新数据库,或者它将获得什么数据库名称。在创建的脚本中,第一行读为USE[C:\SolutionName\ProjectName\APP\u DATA\ASPNETDB.MDF],我是否正确地认为这将在该位置查找数据库并覆盖/重新创建它?如果我想让数据库具有我的项目名称,而不是通用的ASPNETDB名称,那么我必须重命名mdf本身,还是可以使用managementstudio进行重命名?我太傻了:我只需要更改附加数据库的名称就可以做到这一点,现在我已经让所有东西都正常工作了。附加数据库的名称基于.mdf的路径这一事实让我认为我需要 由于某种原因,mdf本身也是如此。所以你的回答为我指明了正确的方向。请注意,尽管在我的SQL Management Studio版本中没有“高级”按钮,但可以通过将“脚本数据”选项设置为True来保存数据。