Entity Framework и несколько схем
Я пытаюсь настроить dbContext так, чтобы он мог обрабатывать несколько схем в одной базе данных Oracle. Я не хотел один монолитный файл dbContext, поэтому я придумал следующее:
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);
}
}
Файл схемы выглядит так:
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());
}
}
Однако, когда я пытаюсь выполнить запрос, я получаю сообщение об ошибке:Value cannot be null
, Значение, на которое он ссылается,someTable
собственность в _schema1.
A. Как я могу это исправить?
B. Есть ли лучшее решение?
Редактировать: То, что я хочу здесь, это возможность писать код, такой как следующий -
var query1 = from p in db.schema1.someTable
select p;
var query2 = from p in db.schema2.someTable
select p;
Где someTable одинаково в обеих схемах. В нашей базе данных есть несколько схем с точно такими же таблицами, которые имеют идентичные или почти идентичные столбцы. Я не хочу создавать отдельный dbContext для каждой схемы, потому что это может означать 5 разных соединений, если я создаю запрос, который извлекает из 5 схем. Если бы я писал этот же запрос в прямом SQL, я мог бы извлечь данные из 5 различных схем с помощью одного соединения, и это то, чего я хотел бы достичь здесь.