Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EF Core Migrations with Multiple DB Schemas

EF Core 1.1 and SQL Server 2016

We are running a microservice application with some microservices having independent few tables. One of the solutions to have many tables for individual microservice, is to give these services a unique schema (e.g. not DBO) and put all of them in one database (good for cost + maintenance).

That works fine in EF 6, however, looking at the generated dbo.__EFMigrationsHistory in core, it looks like core doesn't take the schema into account.

I am aware that the migration in EF Core has changed to look in the code rather than the DB, but my problem is the version that is recorded in the dbo.__EFMigrationsHistory table is schema-agnostic.

Do you know how can we make EF Core schema-aware when it writes the migration to the db?

N.B. builder.HasDefaultSchema(Constants.SCHEMA); is already set in the DBContext.

like image 448
Adam Avatar asked Sep 13 '17 19:09

Adam


1 Answers

builder.HasDefaultSchema() is used to set schema for model. MigrationHistory table is configured bit differently. You can read more about it here

From the link,

The simplest scenario is when you just want to change the table name or schema. This can be done using the MigrationsHistoryTable method in OnConfiguring (or ConfigureServices on ASP.NET Core). Here is an example.

protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options.UseSqlServer(
        connectionString,
        x => x.MigrationsHistoryTable("__MyMigrationsHistory", "mySchema"));
like image 90
Smit Avatar answered Sep 19 '22 17:09

Smit