使用 entity framework 6 db first 方法动态更改 edmx 文件中的模式名称与 Oracle DB

change schema name at edmx file dynamically using entity framework 6 db first approach with Oracle DB

我有一个 UI 页面,其中包含一个具有多个值的下拉菜单。

在 UI 页面中,用户将从下拉列表中 select 一个模式,然后应将与该模式相关的数据加载到网格中。这意味着将来我们可能会获得更多的模式,每个模式都具有相同的 Oracle 数据库和 table 结构。

实体上下文已经使用默认配置的 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。

我通过添加助手 class 找到了解决方案,它会在 运行 时间通过替换架构来更新实体上下文文件。

我只是遵循了 url EF6 Dynamic Schema Change,这对我来说效果很好。 我将连接更改为使用 ORACLE,并从我的服务层调用此 'connect' 方法。