Как IdentityDbContext добавляет свои таблицы в существующую базу данных во время выполнения?

Я прочитал все приведенные ниже вопросы (и многое другое)


Я хочу знать, как IdentityDbContext добавляет свои таблицы (AspNetUsers, AspNetUserLogins и т. д.) в существующую базу данных при первом запуске приложения.

Я не думаю, что они используют какой-либо из этих механизмов, чтобы проверить, существует ли таблица, а затем применить миграцию, если нет.

Есть ли ссылка на исходный код, который они используют?

Примечание.

Я спрашиваю, потому что у меня есть несколько DbContext в моем приложении, и я хочу (найти независимое от базы данных решение) добавить только те таблицы БД, которые потребуются пользователю во время выполнения.


comment
Он использует те же механизмы (модели, DbSets и т. д.). Они находятся в базовых классах, поэтому вы не видите код. Если вы укажете на пустую базу данных, она создаст таблицы идентификаторов, если у вас нет нулевого инициализатора. Добавление миграции также приведет к созданию таблиц.   -  person Steve Greene    schedule 26.04.2018
comment
@SteveGreene Я знаю, что они используют модели, DbSet и т. д., но что еще они делают для добавления своих таблиц во время выполнения в существующую базу данных? .. Когда я использую 2 обычных DbContexts для одной и той же базы данных, первый создает базу данных, а второй выдает исключение, жалуясь на то, что БД была изменена с момента создания модели.   -  person asp    schedule 26.04.2018
comment
Вы можете просто использовать один контекст, который наследуется от IdentityDbContext. Если это невозможно, установите для инициализаторов значение null или MigrateDatabaseToLatestVersion и используйте миграции.   -  person Steve Greene    schedule 26.04.2018