3

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

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

发布 Web 对话框

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

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

4

2 回答 2

3

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

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

于 2012-08-30T01:28:48.190 回答
3

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

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

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

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

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

于 2012-08-30T18:37:14.047 回答