==== WORK IN PROGRESS ==== DAL project: Install-Package Microsoft.EntityFrameworkCore.Design Install-Package Microsoft.EntityFrameworkCore.SqlServer # if needed for any MSSQL stuff in your DbContext Add Models Add a DbContext public class MyDbContext : DbContext { public MyDbContext() { } public MyDbContext(DbContextOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer(Config.ConnectionString); } public static MyDbContext Create() { var optionsBuilder = new DbContextOptionsBuilder(); optionsBuilder.UseSqlServer(Config.ConnectionString); return (new MyDbContext(optionsBuilder.Options)); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.RemovePluralizingTableNameConvention(); base.OnModelCreating(modelBuilder); } public DbSet Parents { get; set; } public DbSet Children { get; set; } } Here's a RemovePluralizingTableNameConvention() that works for .NET Core: public static class ModelBuilderExtensions { public static void RemovePluralizingTableNameConvention(this ModelBuilder modelBuilder) { foreach (IMutableEntityType entity in modelBuilder.Model.GetEntityTypes()) { #if (NETSTANDARD2_0 || NETSTANDARD2_1 || NETCOREAPP2_0 || NETCOREAPP2_1 || NETCOREAPP2_2) entity.Relational().TableName = entity.DisplayName(); #else // for 3.0 and onwards entity.SetTableName(entity.DisplayName()); #endif } } } === Update Entity Framework Tools if needed === PM> dotnet tool update --global dotnet-ef === Create a migration === dotnet ef migrations add InitialCreate --project MyProject.DAL === Update the database === dotnet ef database update --project Mixer.DAL Main project: Add ViewModels Add Profiles Add Specifications