gpt4 book ai didi

c# - 如何指向不同环境的 Entity Framework 数据库上下文

转载 作者:行者123 更新时间:2023-12-05 00:23:45 24 4
gpt4 key购买 nike

我有 3 个数据库 DBDev、DBStaging 和 DBProduction。在我的应用程序中,我为每个数据库创建了 3 个 edmx。每个数据库都有一个匹配的实体,如下所示:DBDev -> DEVEntities、DBStaging -> StagingEntities 或 DBProduction -> ProductionEntities

我在 web.config 中选择要通过它访问的数据库:

<connectionStrings configSource="Configs\DBDev.config" /> <!-- or DBStaging or DBProduction-->

我将所有数据库访问路由到一个静态类:DBAccess。当我需要指向特定上下文时,我手动执行此操作:
private static DEVEntities db = new DEVEntities();

或者
private static StagingEntities db = new StagingEntities();

或者
private static ProductionEntities db = new ProductionEntities();

有什么更智能的方式来指向所需的上下文而无需手动更改它?

最佳答案

  • 在配置文件中创建三个不同的连接字符串,如下所示:
    <connectionStrings>
    <add name="DevConnection" connectionString="..." />
    <add name="StagingConnection" connectionString="..." />
    <add name="ProdConnection" connectionString="..." />
    </connectionStrings>
  • 在您的 Entity Framework 上下文类中,添加一个构造函数,该构造函数将连接字符串作为参数并调用相应的基本构造函数:
    public class MyEntities : ObjectContext // or DbContext
    {
    public MyEntities(string connectionString) : base(connectionString) {}
    }
  • 通过传递连接字符串的名称来实例化您的实体上下文。您还可以使用依赖注入(inject)容器并将其配置为使用正确的值:
    var context = new MyEntities("DevConnection");
  • 关于c# - 如何指向不同环境的 Entity Framework 数据库上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660897/

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