如何为实体框架数据库使用dbDacFx Web Deploy Provider?

时间:2012-08-29 16:06:09

标签: asp.net entity-framework database-schema visual-studio-2012 webdeploy

我正在Visual Studio 2012下编写一个ASP.NET Web窗体应用程序。我有一个实体框架代码优先上下文类,它将我的C#对象与数据库链接起来。但是这个上下文是使用Database First方法自动生成的。我在我的数据库中使用了诸如唯一索引和用户聚合之类的功能,而EF 5中的Code First of Model First方法不支持AFAIK。

我正在使用one-click publish按钮来部署我的项目。我的数据库被识别为EF数据库,我看到“执行代码优先迁移”复选框,但它显示为灰色:

Publish Web dialog

没关系,因为我使用的是Database First方法。但是我想使用“更新数据库”选项,它出现在我的默认连接中,只是为了同步数据库模式。如“dbDacFx Web部署提供程序”部分中所述here。怎么做?

如果我理解正确,我总是可以手动使用Microsoft SQL Management Studio来实现此目的。在这种情况下如何手动完成?

2 个答案:

答案 0 :(得分:3)

您可以在Web.config文件的connectionStrings元素中创建具有不同名称的第二个连接字符串条目。它将显示在dbDacFx选项的发布对话框中。

该方案类似于在不使用迁移的情况下部署Code First - 请参阅http://msdn.microsoft.com/en-us/library/ee942158.aspx#deploy_code_first_without_migrations

答案 1 :(得分:3)

Tom(tdykstra)是正确的,您需要在web.config中创建一个新的连接字符串,以使用dbDacFx发布模型,而不是使用EF CF迁移。

“Web发布”对话框支持两种类型的数据库发布机制:

  1. 通过迁移发布EF CF
  2. 通过dbDacFx
  3. 发布增量数据库架构

    如果连接字符串与EF CF上下文相关联,则在发布对话框中,它将始终显示 Executed Code First Migrations 复选框。我们希望简单易懂地解释故事,因此我们没有为此创建任何配置选项。对于那些不想使用发布对话框的高级用户,您可以使用正确的内容创建发布配置文件(.pubxml)文件,并使用该文件从命令行进行发布。要为此方案提供VS发布对话框支持,您必须向web.config添加连接字符串。

    在您的情况下,您有一个连接字符串DatabaseEntities,由EF CF上下文使用。您应该在web.config,DatabaseEntities-publish中创建一个新的连接字符串,该字符串仅在发布期间使用。您需要确保要发布到的连接字符串位于DatabaseEntities和DatabaseEntities-publish的文本框中。