多个DbContext类使用相同的连接字符串?

Aec*_*Liu 4 entity-framework entity-framework-5

例如,我有以下DbContext类。

public class AppDbContext : DbContext {
    ...
}
public class LogDbContext : DbContext {
    ...
}
public class FooDbContext : DbContext {
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果名为的连接字符串AppDbContext位于上,App.Config并且我希望其他DbContext类共享与该字符串相同的连接字符串AppDbContext,我可以只将字符串“ AppDbContext”用作ctorof LogDbContext和的参数FooDbContext。例如,

public class FooDbContext : DbContext {
    public FooDbContext : base("AppDbContext") { }
}
Run Code Online (Sandbox Code Playgroud)

有副作用吗?

更新2013/1/9

在尝试了@ ShinH2S的建议和一些东西之后,我放弃了这种方式,并决定给出具有不同的connectionStrings和数据库的不同的Dbcontext派生类。我已经尝试了一个测试项目,并将其放在GitHub上。当entityframework检测到由于AppDbContext和FooDbContext模式具有不同的模式而导致数据库方案更改时,它将引发运行时异常。如果我DropCreateDatabaseIfModelChanges对两个DbContext派生类都分配了策略,则其中一个模型将被删除,因为模型彼此不同。

更新2017/10

这是一个老问题。在我的内存中,EF6 and above versions同一迁移表中的多个上下文可以具有不同的迁移历史记录。我更喜欢SO的答案。我大约两年没有使用C#进行编码。

Cod*_*und 5

恕我直言,没有副作用。但如果是我,我会只是创建一个基类,从的DbContext类继承BaseDbContext,那么所有的上下文(AppDbContext, LogDbContext和FooDbContext)将从中获得BaseDbContext。