Может ли EF Code First иметь еще два DBContext в одном приложении? - PullRequest
1 голос
/ 04 февраля 2012

У меня есть приложение ASP.NET MVC, которое использует код EF. Во-первых, по какой-то причине мне нужно использовать 2 разных DBContext для моего приложения, как в примере здесь:

namespace ESN.Models
{
    public class CoreA
    {
        //..........
    }

    public class CoreB
    {
        //..........
    }

    public class CoreDbContext : DbContext
    {
        public DbSet<CoreA> CoreA { get; set; }
        public DbSet<CoreB> CoreB { get; set; }
    }

    public class StuffA
    {
        //..........
    }

    public class StuffB
    {
        //..........
    }

    public class StuffDbContext : DbContext
    {
        public DbSet<StuffA> StuffA { get; set; }
        public DbSet<StuffB> StuffB { get; set; }
    }
}

И для удобства разработки я добавляю код, который удаляет и заново создает базу данных, если модель изменилась:

    Database.SetInitializer<CoreDbContext>(new DropCreateDatabaseIfModelChanges<CoreDbContext>());
    Database.SetInitializer<StuffDbContext>(new DropCreateDatabaseIfModelChanges<StuffDbContext>());

Но проблема в том, что они просто создают новую таблицу для DbContent, которую я должен использовать в первую очередь, таблица Core существует, но нет материала!

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 04 февраля 2012

Если вы хотите использовать два типа DbContext и инициализаторы базы данных, каждый контекст должен использовать свою собственную базу данных. Если вы используете одну и ту же базу данных для обоих типов контекста, вы не можете использовать инициализаторы базы данных и должны поддерживать изменения схемы базы данных вручную (вы должны вручную или с помощью некоторого сценария SQL создать базу данных и все необходимые таблицы перед использованием приложения).

...