Как изменить имя схемы - PullRequest
6 голосов
/ 21 ноября 2011

Я занимаюсь разработкой приложения ASP.NET MVC, в котором сначала используется код EF 4.1.

Мне нужно изменить имя схемы по умолчанию (dbo) на другое имя.

Я пробовал это:

public string SchemaName;

public void MyContext()
{
    SchemaName = GetSchemaName();
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Account>().ToTable("TB_ACC_HOLDERS", SchemaName);
}

Но это не работает. Когда я получаю новый экземпляр моего Context и вызываю некоторые из моих таблиц ... сгенерированный запрос все еще с именем схемы "dbo".

У кого-нибудь есть идея, чтобы решить это?

1 Ответ

5 голосов
/ 22 ноября 2011

Через несколько часов в режиме отладки я получаю сообщение об ошибке.

В конструкторе я получаю имя схемы для connectionString и устанавливаю свойство (schemaName) со значением.

Но когда выполнение получило метод OnModelCreating (), мое свойство schemaName было установлено, кто знает почему, в NULL.

Затем я поместил переменную schemaName, зафиксированную в коде метода. Когда я так делаю, все правильно.

Спасибо всем!

Здесь код:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    //It works fine
    var schemaName = "SYSTEM";
    modelBuilder.Entity<Account>().ToTable("TB_ACC_HOLDERS", schemaName);
}
...