如何在运行时更改DbSchema for Entity Framework?

时间:2013-10-28 11:33:08

标签: c# oracle entity-framework

我们在项目中使用EF5.0,我们使用OnModelCreating事件中的以下代码提供Db架构名称

string schemaName = DbSchema; 
modelBuilder.Configurations.Add(new TableMap(schemaName));

但我们的问题是OnModelCreating事件只被调用一次(即使我再次创建上下文对象),我们需要为循环中处理的不同数据库更改Db模式名称。

我相信EF 6.0有一个类似HasDefaultSchema的方法,但我无法找到适合EF5.0的方法

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

最干净的方法可能是使用DbContext的ctor overload that takes model [1]。这样你就可以创建两种不同的配置(虽然只在架构中有所不同)并根据需要进行切换。

模型本身由DbModel class表示,由DbModelBuilder class创建。它与OnModelCreating方法几乎相同。您可以轻松地对此进行参数化。

[1]我想你想要使用一个上下文。如果没有,你我会选择不同的上下文类。