Cambiar Default Schema

Una rápida de Entity Framework + Code First.

Hay ocasiones en las que se quiere crear la BD en otro schema dentro de SQL que no sea el dbo, para ello se puede usar la siguiente instrucción:

modelBuilder.Entity<Settings>().ToTable(“Settings”, schemaName);

sin embargo toda las tablas que hacen relaciones muchos a muchos van a seguir quedando en el schema dbo, asi que hay que usar un truco de fluent API para hacer el ajuste, algo como esto:

modelBuilder.Entity<User>()
.HasMany(p => p.groups)
.WithMany(r => r.users)
.Map(m => m.ToTable(“UsersByGroups”, schemaName));

donde schemaName es una variable en la que he puesto el nombre con el que quiero que quede nombrado el schema.

Tiene algunos efectos colaterales cuando se manejan objetos con herencia pero para la mayoría de los escenarios funciona bastante bien. El equipo de EF ya esta advertido de la necesidad de poder modificar el schema de forma global y trabajan en eso.