在asp.net mvc 3中将数据库表部署到生产环境

时间:2012-11-25 07:09:22

标签: asp.net-mvc-3 visual-studio-2010 sql-server-2008 sql-server-2005

我必须从开发环境将asp.net mvc 3应用程序部署到生产环境。

开发环境

  1. Sql Server 2008
  2. Visual Studio 2010
  3. 应用程序:使用模型第一方法的ASP.NET MVC 3和实体框架
  4. 以Visual Studio形式构建的数据库,格式为.mdf
  5. 生产环境:

    1. sql server 2005
    2. Window Server 2008 R2
    3. IIS 7
    4. 我已使用FTP发布方法使用Visual Studio将应用程序发布到生产环境。当我浏览应用程序时,它会引发以下异常:

        

      System.Data.SqlClient.SqlException:无效的对象名称'dbo.User'。

      由于我没有在生产环境的sql server 2005数据库中构建表,因此抛弃了上述异常。有没有简单的方法将使用Visual Studio的开发环境数据库部署到生产环境数据库?或者我是否需要在生产环境中手动构建每个表?

1 个答案:

答案 0 :(得分:0)

虽然我还没有尝试过,但Code First Migrations可能是您正在寻找的解决方案:http://msdn.microsoft.com/en-US/data/jj591621

实现此目的的另一种方法是使用Microsoft的SQL Server数据工具项目:http://msdn.microsoft.com/en-us/data/tools.aspx。要获得此功能,您以前必须支付Visual Studio Premium或更高版本的许可证,但现在可以免费使用SQL Server数据工具。我使用的方法是使用数据库第一种方法编写的系统,并且需要维护版本化SQL脚本的历史记录。

要使用此方法,请安装SSDT并创建新的数据库项目。然后创建一个Schema Comparison,将开发数据库与数据库项目进行比较。运行比较并将更新写入项目(对于将来的更新,您可以使用此工具比较生产和开发数据库之间的模式。)

然后,您可以使用“发布”功能将项目直接发布到生产数据库,或者生成一个脚本,然后手动验证并运行该脚本。

要特别注意直接发布到生产数据库,因为我担心数据丢失或意外更新。除了初始模式创建(甚至可能不是初始创建),我建议您始终生成一个脚本,以便在针对生产数据库运行之前验证输出并在阶段环境中进行测试。

我意识到您正在与开发数据库模式进行比较并维护一个与您的POCO不同的模型,这可能不是您的意图,但是一旦您开始管理版本和版本控制,您可以检查一组版本化的SQL脚本源控制和返回是非常宝贵的。