Organizational Research By

Surprising Reserch Topic

entity framework and multiple schemas


entity framework and multiple schemas  using -'c#,oracle,entity-framework,ef-code-first'

I'm trying to set up my dbContext so that it can handle multiple schemas in a single Oracle database. I didn't want one monolithic dbContext file so I've come up with the following:

public class oraDbContext : DbContext
{
    static oraDbContext() {
        Database.SetInitializer<oraDbContext>(null);
    }

    public oraDbContext(string connName)
        : base("Name=" + connName) { }

    public _schema1 schema1 = _schema1.Instance;
    public _schema2 schema2 = _schema2.Instance;

    protected override void OnModelCreating(DbModelBuilder modelBuilder) {
        schema1.OnModelCreating(modelBuilder);
        schema2.OnModelCreating(modelBuilder);
    }
}


The schema file looks like this:

public sealed class _schema1
{
    private static readonly _schema1 instance = new _schema1();

    static _schema1() { }
    private _schema1() { }

    public static _schema1 Instance {
        get {
            return instance;
        }
    }

    public DbSet<someTable> someTable { get; set; }

    internal void OnModelCreating(DbModelBuilder modelBuilder) {
        modelBuilder.Configurations.Add(new someTableMap());
    }
}


However, when I try to perform a query I get the error: Value cannot be null. The value it's referring to is the someTable property in _schema1.

A. How can I fix this?

B. Is there a better solution?

Edit: What I want here is the ability to write code such as the following -

var query1 = from p in db.schema1.someTable
             select p;
var query2 = from p in db.schema2.someTable
             select p;


Where someTable is the same in both schemas. In our database we have several schemas with the exact same tables that have identical or nearly identical columns. I don't want to create a seperate dbContext for each schema because that could potentially mean 5 different connections if I'm creating a query that pulls from 5 schemas. If I was writing this same query in straight SQL I could pull the data from 5 different schemas with a single connection and that's what I would like to accomplish here.
    
asked Sep 9, 2015 by ValeriaSells
0 votes
13 views



Related Hot Questions



Government Jobs Opening


...