Первый код миграции контекста нескольких БД
В Entity Framework Core вы можете реализовать несколько DbContext и применить изменения к одной базе данных, используя несколько проектов. Например, вы планируете добавить схему из стороннего проекта в свой собственный проект.
Ваше требование состоит в том, чтобы добавить эту схему в вашу единую базу данных. Это может быть любая база данных; например SqlLite, SQLServer или MySQL.
В этом руководстве я буду использовать SQLServer с EntityFramework Core 2.0. Ниже представлены 3 проекта с собственным DbContext. Вы можете найти этот проект на моем GitHub здесь .
- BookRental
- StudentRegistration
- MultipleDbContextExample
BookRental
проект содержит две сущности с именами «Автор» и «Книга».StudentRegistration
проект содержит одну сущность под названием «Студент».MultipleDbContextExample
Проект содержит DbContext индивидуальной аутентификации ядра ASP.NET по умолчанию, который будет иметь свои собственные объекты.
В MultipleDbContextExample
, мы добавим DbContext из BookRental
и StudentRegistration
проектов. Это добавит все объекты в одну базу данных.
Вот DbContexts из отдельных проектов. Я предполагаю, что вы уже знаете, как создавать модели, сущности и т. д. В этом руководстве вы получите общее представление о том, как применять миграции к одной базе данных SQL.
Проект BookRental DbContext
namespace BookRental.Models
{
public class BookRentalDbContext : DbContext
{
public BookRentalDbContext (DbContextOptions options)
: base(options)
{
}
public DbSet Author { get; set; }
public DbSet Book { get; set; }
}
}
Проект StudentRegistration DbContext
namespace StudentRegistration.Models
{
public class StudentRegistrationDbContext : DbContext
{
public StudentRegistrationDbContext(DbContextOptions options)
: base(options)
{
}
public DbSet Student { get; set; }
}
}
Проект MultipleDbContextExample DbContext
namespace MultipleDbContextExample.Data
{
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
}
}
Теперь у нас есть DbContext из каждого проекта. Давайте продолжим и внесем изменения в startup.cs
файл в MultipleDbContextExample
проекте, который будет поддерживать один единственный экземпляр базы данных SQL.
В ConfigureServices
DI я определил два DbContext для BookRentalDbContext
и StudentRegistrationDbContext
.
public void ConfigureServices(IServiceCollection services)
{
// Default ASP.NET Authentication DbContext
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity()
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
// BookRentalDbContext from BookRental project
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), o => o.MigrationsAssembly("MultipleDbContextExample"))
);
// StudentregistrationDbContext from StudentRegistration project
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"), o => o.MigrationsAssembly("MultipleDbContextExample"))
);
// Add application services.
services.AddTransient();
services.AddMvc();
}
После того, как вы определили свой собственный DbContext в файле запуска, мы применим миграцию, которая создаст таблицы в базе данных. Выполните приведенные ниже команды из консоли PowerShell. Убедитесь, что вы находитесь в MultipleDbContextExample
проекте и выполните приведенные ниже команды.
Миграция базы данных по умолчанию из MultipleDbContextExample
проекта.
Update-Database -Context ApplicationDbContext
Добавьте миграцию из BookRentalDbContext
DbContext.
Add-Migration InitialBookRentalDbMigration -Context BookRentalDbContext -o Data/Migrations/BookRental/BookRentalDB
Update-Database -Context BookRentalDbContext
Добавьте миграцию из StudentRegistrationDbContext
DbContext.
Add-Migration InitialStudentRegistrationDbMigration -Context StudentRegistrationDbContext -o Data/Migrations/StudentRegistration/StudentRegistrationDB
Update-Database -Context StudentRegistrationDbContext
После того, как вы выполнили вышеуказанную команду, вы увидите таблицы, созданные в базе данных.
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.