@deniskutovskiy
Новичок в ASP.Net MVC

Как переместить таблицы в другую бд с использованием EF Code First?

Есть две базы данных интернет-магазина: Одна основная (контекст наследуется от DbContext), другая содержит пользователей (ApplicationDbContext, наследуется от IdentityDbContext<ApplicationUser>). На обеих настроены миграции, которые произвожу раздельно (по этому гайду).

Сегодня столкнулся с необходимостью объединить их в одну БД (хостинг ограничивает количество баз), в связи с чем появился вопрос: Как переместить все, например, в основную базу правильно, не нарушив "гомеостаз" EF Code First Migrations и Asp.Net Identity? Получится ли объединить контексты, учитывая, что они наследуются от разных классов? Что делать дальше? Или все обстоит намного проще (например 2 контекста в одной БД)? Прошу пошагово расписать если не действия, то хотя бы логику процесса, который мне необходимо проделать для решения проблемы.

P.S.: Разумеется подойдет и вариант «ручками», после которого Code First не будет жаловаться.

P.P.S.: Магазин только пишется, пользователь всего 1, так что пересоздание таблицы с пользователями не страшно. Лишь бы на выходе все работало.
  • Вопрос задан
  • 664 просмотра
Пригласить эксперта
Ответы на вопрос 1
Несколько контекстов в одной базе замечательно уживаются, нужно только для каждого указать свой ключ
internal sealed class Configuration : DbMigrationsConfiguration<Models.ApplicationDbContext>
    {
        public Configuration()
        {
            ...
            ContextKey = "ApplicationDbContextKeyName";
        }


перейти к именованным миграциям т.е. создавать их так:
add-migration -name "MigrationName"
что бы при желании "глазиком" посмотреть/исправить изменения. При этом будет необходимо каждый раз в командной строке указывать с каким контекстом работаем. Так что возможно лучше произвести объединение контекстов. Можно например перенести все сущьности в ApplicationDbContext сгенерировать миграцию, удалить из неё создание таблиц (что бы данные не потерять) и продолжать работать как привык.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы