gpt4 book ai didi

asp.net - 带有外部 connectionStrings.config 文件的 WebPublish Code-First 迁移

转载 作者:行者123 更新时间:2023-12-04 08:34:34 24 4
gpt4 key购买 nike

我目前有一个使用 Entity Framework 代码优先迁移和 Web 发布的项目,其中 connectionStrings 存储在 web.config 文件中。

现在是将 connectionStrings 移到 web.config 之外的时候了,因此我们将它们放入 connectionString.config 文件中,并让 slowcheetah 在 webpublish 上转换它们。

连接字符串.config

<connectionStrings>
<!-- Testing Databases -->
<add
connectionString="server=testserver;database=testdatabasename;user id=someid;password=*******"
name="dbname"
providerName="System.Data.SqlClient"
/>
</connectionStrings>

web.config 相关部分
  <connectionStrings configSource="config\connectionStrings.config">
</connectionStrings>

现在,当我加载 Web 发布对话框(构建 -> 发布项目)时,在设置选项卡中我收到错误
No Databases found in the project

这向我表明对话框不够智能,无法查看 configSource 并从那里加载数据。我可以确认在我的开发环境中正确加载了 connectionStrings,我还可以确认 slowcheetah 正在正确地将配置转换到它的生产环境中。

有没有办法让 Visual Studio Publish 查看我的配置配置,并允许代码优先迁移?

最佳答案

我在使用 Visual Studio 2013 Update 4 并通过 connectionStrings 的 configSource 属性使用类似共享方法的 .net 4.5 下已发布项目的单独项目中首先使用 Entity Framework 6 代码时也遇到了同样的问题。

我列出了这些细节,因为它会引起一场完美的 Storm 。为了摆脱它,我遇到了一些不同的错误,不得不以几种不同的方式对其进行破解,根据 EF blog they know it's a mess and are re-factoring their approach .这是我能想到的最好的(这里是龙):

发布向导似乎不理解 configSource 所以我把它从 web.config 中的 conctionStrings 去掉,留下一个空元素(你也可以完全删除它,但我觉得一个现有但空的元素最好加上注释更合适)。为了使其在本地工作,我添加了一个连接工厂以使事情在 Debug模式(本地)下工作并使发布向导找到数据库迁移。我使用工厂是因为 connectionString 总是取代工厂,我需要滥用它来使项目在任何转换之前工作。还要确保传递给 dbcontext 构造函数(又名“connectionStringOrDatabaseName”)的字符串既是连接字符串又是数据库名称(使工厂生成的 db 与连接字符串 db 匹配)。

现在它找到了数据库并在本地工作,但它并没有真正使用您的 sharedConfig(因此并不总是在发布时工作)。为了解决这个问题,我使用了一个 web.config 转换到 xsd:Replace/Insert the empty/missing connectionStrings element with one using configSource.如果您现在尝试发布,您将遇到 invalid connectionStrings element is produced 的问题。 .

尽管如此接近,但我无法直接找到/找出该问题的解决方案,因此我不得不采用另一种解决方法:I created a custom transformation aka xsd:Import 当给定一个 configSource 属性用另一个文件中的一个替换父元素时,我将把实现留给读者作为练习。

关于asp.net - 带有外部 connectionStrings.config 文件的 WebPublish Code-First 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27822722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com