我正在Visual Studio 2012下编写一个ASP.NET Web窗体应用程序。我有一个实体框架代码优先上下文类,它将我的C#对象与数据库链接起来。但是这个上下文是使用Database First方法自动生成的。我在我的数据库中使用了诸如唯一索引和用户聚合之类的功能,而EF 5中的Code First of Model First方法不支持AFAIK。
我正在使用one-click publish按钮来部署我的项目。我的数据库被识别为EF数据库,我看到“执行代码优先迁移”复选框,但它显示为灰色:
没关系,因为我使用的是Database First方法。但是我想使用“更新数据库”选项,它出现在我的默认连接中,只是为了同步数据库模式。如“dbDacFx Web部署提供程序”部分中所述here。怎么做?
如果我理解正确,我总是可以手动使用Microsoft SQL Management Studio来实现此目的。在这种情况下如何手动完成?
答案 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发布”对话框支持两种类型的数据库发布机制:
如果连接字符串与EF CF上下文相关联,则在发布对话框中,它将始终显示 Executed Code First Migrations 复选框。我们希望简单易懂地解释故事,因此我们没有为此创建任何配置选项。对于那些不想使用发布对话框的高级用户,您可以使用正确的内容创建发布配置文件(.pubxml)文件,并使用该文件从命令行进行发布。要为此方案提供VS发布对话框支持,您必须向web.config添加连接字符串。
在您的情况下,您有一个连接字符串DatabaseEntities,由EF CF上下文使用。您应该在web.config
,DatabaseEntities-publish中创建一个新的连接字符串,该字符串仅在发布期间使用。您需要确保要发布到的连接字符串位于DatabaseEntities和DatabaseEntities-publish的文本框中。