5

例如,我有以下 DbContext 类。

public class AppDbContext : DbContext {
    ...
}
public class LogDbContext : DbContext {
    ...
}
public class FooDbContext : DbContext {
    ...
}

如果名为的连接字符串AppDbContext位于App.Config并且我希望其他 DbContext 类与 共享相同的连接字符串AppDbContext,我是否可以将字符串“AppDbContext”作为ctorofLogDbContext和的参数传递FooDbContext。例如,

public class FooDbContext : DbContext {
    public FooDbContext : base("AppDbContext") { }
}

它有任何副作用吗?

更新 2013/1/9

在尝试了@ShinH2S 的建议和一些东西之后,我放弃了这种方式,并决定给不同的 Dbcontext 派生类提供不同的连接字符串和数据库。我尝试了一个测试项目并将其放在 GitHub 上AppDbContext当实体框架检测到数据库方案因和FooDbContext具有不同的模式而更改时,它将引发运行时异常。如果我DropCreateDatabaseIfModelChanges为两个 DbContext 派生类分配一个策略,其中一个将被删除,因为模型与另一个不同。

2017/10 更新

这是一个老问题。在我的记忆中,EF6 and above versions同一个迁移表中的多个上下文可以有不同的迁移历史。我更喜欢SO 的这个答案。我已经有 2 年没有使用 C# 编码了。

4

1 回答 1

5

恕我直言,没有副作用。但如果是我,我将创建一个继承自 DbContext 类的基类,BaseDbContext然后所有上下文(AppDbContextLogDbContextFooDbContext都将派生自BaseDbContext.

于 2013-01-08T08:33:20.797 回答