【问题标题】:How to use the dbDacFx Web Deploy Provider for Entity Framework Database?如何为实体框架数据库使用 dbDacFx Web 部署提供程序?
【发布时间】:2012-08-24 07:24:06
【问题描述】:

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

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

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

如果我理解正确,我总是可以为此手动使用 Microsoft SQL Management Studio。在这种情况下如何手动执行?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      网络发布对话框支持两种类型的数据库发布机制:

      1. EF CF 通过迁移发布
      2. 增量数据库模式通过dbDacFx发布

      如果连接字符串与 EF CF 上下文相关联,则在发布对话框中,它将始终显示 Executed Code First Migrations 复选框。我们想让故事简单易懂,所以我们没有为此创建任何配置选项。对于不想使用发布对话框的高级用户,您可以创建具有正确内容的发布配置文件 (.pubxml) 文件,并使用该文件从命令行发布。为了让 VS 发布对话框支持这种情况,您必须向 web.config 添加一个连接字符串。

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

      【讨论】:

      • 感谢您的澄清。请看一下我的相关问题:stackoverflow.com/questions/12201606/…
      • 我无法获取 web 发布包来部署数据库。我在 Publish SQL 选项卡中设置了它,但它根本没有部署。我首先在 Visual Studio 2013 中使用数据库。我第一次使用发布对话框时,它显示我的数据库正在部署。现在,当我打开发布对话框时,数据库永远不会包含在发布中。
      猜你喜欢
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      相关资源
      最近更新 更多