C# 阅读实体框架“;“从数据库更新模型”;来自app.config以外其他源的连接字符串(开发分支数据库)

C# 阅读实体框架“;“从数据库更新模型”;来自app.config以外其他源的连接字符串(开发分支数据库),c#,database,entity-framework,branch,app-config,C#,Database,Entity Framework,Branch,App Config,我的项目: 我有一个c#数据项目(目前在TFS中,但它将被移动到git),有多个分支 大多数分支机构都有自己的开发数据库(在azure SQL server上) 我正在使用EntityFramework6(数据库首先使用edmx模型,在EF4天内创建) 数据库项目由多个解决方案/启动项目(作为主项目的托管项目)使用 我想在EF“从数据库更新模型”对话框中自动拥有正确的开发数据库。应该使用的连接字符串必须位于托管项目web.config中(应用程序本身在azure上运行,因此在运行时从不使用w

我的项目:

  • 我有一个c#数据项目(目前在TFS中,但它将被移动到git),有多个分支
  • 大多数分支机构都有自己的开发数据库(在azure SQL server上)
  • 我正在使用EntityFramework6(数据库首先使用edmx模型,在EF4天内创建)
  • 数据库项目由多个解决方案/启动项目(作为主项目的托管项目)使用
我想在EF“从数据库更新模型”对话框中自动拥有正确的开发数据库。应该使用的连接字符串必须位于托管项目web.config中(应用程序本身在azure上运行,因此在运行时从不使用web.config连接字符串)

目前,我有一个流程:

  • 使用特定分支数据库的连接字符串更新web.config(和所有其他配置)
  • 我将更改检查为源代码管理
  • 我对主分支执行“放弃合并”(如果将签入合并到其他分支,则将更改标记为合并,而不更改“主”数据库连接或其他开发人员连接)
这一过程远非理想

我使用外部配置文件(使用“file”或“configSource”属性)进行了测试,但是:

  • 无法在父目录中包含文件(我必须为每个项目创建一个DatabaseConnection.config文件,而不是仅创建一个中心文件)
  • 如果签入SC(没有真正的胜利)或创建文件的过程(在预构建事件中),仍然存在问题。这需要先进行构建,然后才能更新数据库(在新分支中/在使用git时切换分支之后?)
所以还是不理想

我找不到任何关于数据库设计器(更新模型向导)的信息,该向导能够从启动项目配置文件(?)以外的其他位置读取连接

我还知道很多人每个开发人员都有数据库,而不是每个分支,但在这种情况下我需要分支数据库。我也只在更新模型时使用正确的分支数据库时遇到问题。在运行时自动选择正确的分支/开发数据库(命名约定)

->有人有关于使用的任何提示吗

  • 多个.config文件/项目
  • 每个分支机构有一个数据库(大部分)
  • 通常使用分支开关
  • 或者告诉EF6“从数据库更新模型”向导从何处/如何从另一个源获取连接字符串的任何方法

由于项目和部署机制的规模,转换为“模型优先”目前也不太可能

我不相信您可以特别更改此向导的行为。我查看了EDMX文件,但似乎也没有显示任何提示。您是否尝试过使用快捷方式,甚至可能是指向父目录中connections.config的符号链接的黑客方法?我不明白为什么会被否决。这个问题显示了大量的研究工作,这是很清楚的,知道一些事情是否不可能是很有用的。(我担心这是真的)。我害怕这个答案@Gigabyte.:-)我可能会尝试一些符号链接,谢谢你的想法。但这仍然给我留下了一个问题,即何时创建/更新配置文件。一个运行前的UpdateWizard活动会很好:-)@GertArnold谢谢,我已经看够了“你已经尝试了什么?”的评论,我不想成为一个在没有研究的情况下问问题的人。:-@菲利克斯,你说得对,这解决不了问题。现在,我想到了两个选项:(a/很难)创建一个visual studio插件,看看是否有与您提到的类似的扩展点,或者-(b/好的)在MSBuild中使用一个预构建任务,该任务运行一个脚本来修改配置文件(返回)到您想要的位置。在只需要重新生成的工作流中。