use*_*042 4 c# model-view-controller entity-framework
我有3个数据库DBDev,DBStaging和DBProduction.在我的应用程序内部,我为每个数据库创建了3个edmx.每个DB都有一个匹配的实体,如下所示:DBDev - > DEVEntities,DBStaging - > StagingEntities或DBProduction - > ProductionEntities
我在web.config中选择要通过此访问的数据库:
<connectionStrings configSource="Configs\DBDev.config" /> <!-- or DBStaging or DBProduction-->
Run Code Online (Sandbox Code Playgroud)
我将我的所有数据库访问路由到一个静态类:DBAccess.当我需要指向特定的上下文时,我手动执行此操作:
private static DEVEntities db = new DEVEntities();
Run Code Online (Sandbox Code Playgroud)
要么
private static StagingEntities db = new StagingEntities();
Run Code Online (Sandbox Code Playgroud)
要么
private static ProductionEntities db = new ProductionEntities();
Run Code Online (Sandbox Code Playgroud)
什么是更智能的方式来指向所需的上下文而无需手动更改它?
在配置文件中创建三个不同的连接字符串,如下所示:
<connectionStrings>
<add name="DevConnection" connectionString="..." />
<add name="StagingConnection" connectionString="..." />
<add name="ProdConnection" connectionString="..." />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)在Entity Framework上下文类中,添加一个构造函数,该构造函数将连接字符串作为参数并调用相应的基本构造函数:
public class MyEntities : ObjectContext // or DbContext
{
public MyEntities(string connectionString) : base(connectionString) {}
}
Run Code Online (Sandbox Code Playgroud)通过传递连接字符串的名称来实例化您的实体上下文.您还可以使用依赖项注入容器并将其配置为使用正确的值:
var context = new MyEntities("DevConnection");
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2340 次 |
| 最近记录: |