我有一个UI页面,其中包含一个带有多个值的下拉列表。
在UI页面上,用户将从下拉菜单中选择一个架构,然后应将与该架构相关的数据加载到网格中。这意味着将来我们可能会获得更多数量的具有相同Oracle数据库和表结构的模式。
已使用默认配置使用DB First方法创建的实体上下文。但是基于上述要求,我需要根据架构更改连接到Oracle DB。
虽然我在下面使用的方法对我没有用,但它始终指向在连接字符串上配置的架构,而不是我要发送到实体上下文的架构。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
if (SchemaName != null)
{
modelBuilder.HasDefaultSchema(SchemaName);
}
base.OnModelCreating(modelBuilder);
throw new UnintentionalCodeFirstException();
}
有人可以建议最好的方法吗?
我尝试在模型创建时应用模式名称,就像上面的代码一样。这对我不起作用。
实际需要是,已经使用DB First方法和默认配置创建了实体上下文。但是基于上述要求,我需要根据架构更改连接到Oracle DB。
答案 0 :(得分:1)
我通过添加一个帮助器类找到了解决方案,该类将在运行时通过替换架构来更新实体上下文文件。
我刚跟踪了网址EF6 Dynamic Schema Change,对我来说效果很好。 我将连接更改为使用ORACLE,并从我的服务层调用了此“连接”方法。