User Tools

Site Tools


nebolcontroller_netcore_mssql_adjustments

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
nebolcontroller_netcore_mssql_adjustments [2021/07/31 11:05] – created nebolnebolcontroller_netcore_mssql_adjustments [2021/08/02 03:07] (current) nebol
Line 1: Line 1:
  
 +==== WORK IN PROGRESS ====
  
 DAL project: DAL project:
  
-Install-Package Microsoft.EntityFrameworkCore.SqlServer+<code>
 Install-Package Microsoft.EntityFrameworkCore.Design Install-Package Microsoft.EntityFrameworkCore.Design
 +Install-Package Microsoft.EntityFrameworkCore.SqlServer # if needed for any MSSQL stuff in your DbContext
 +</code>
  
 Add Models Add Models
- 
  
 Add a DbContext Add a DbContext
  
- public class MixerDbContext : DbContext+<code> 
 +public class MyDbContext : DbContext 
 +
 + public MyDbContext()
  {  {
- public MixerDbContext() + }
-+
- }+
  
- public MixerDbContext(DbContextOptions<MixerDbContext> options) : base(options) + public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) 
- +
- }+ }
  
- protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
- +
- optionsBuilder.UseSqlServer(@"server=192.168.1.176;user id=sa;password=!Q2w#E4rqq;database=trader"); + optionsBuilder.UseSqlServer(Config.ConnectionString); 
- }+ }
  
- public static MixerDbContext Create()+ public static MyDbContext Create(
 +
 + var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>(); 
 + optionsBuilder.UseSqlServer(Config.ConnectionString); 
 + return (new MyDbContext(optionsBuilder.Options)); 
 +
 + 
 + protected override void OnModelCreating(ModelBuilder modelBuilder) 
 +
 + modelBuilder.RemovePluralizingTableNameConvention(); 
 + 
 + base.OnModelCreating(modelBuilder); 
 +
 + 
 + public DbSet<Parent> Parents { get; set; } 
 + public DbSet<Child> Children { get; set; } 
 +
 +</code> 
 + 
 +Here's a RemovePluralizingTableNameConvention() that works for .NET Core: 
 + 
 +<code> 
 +public static class ModelBuilderExtensions 
 +
 + public static void RemovePluralizingTableNameConvention(this ModelBuilder modelBuilder) 
 +
 + foreach (IMutableEntityType entity in modelBuilder.Model.GetEntityTypes())
  {  {
- var optionsBuilder = new DbContextOptionsBuilder<MixerDbContext>(); +#if (NETSTANDARD2_0 || NETSTANDARD2_1 || NETCOREAPP2_0 || NETCOREAPP2_1 || NETCOREAPP2_2
- optionsBuilder.UseSqlServer(Config.ConnectionString); + entity.Relational().TableName = entity.DisplayName(); 
- return (new MixerDbContext(optionsBuilder.Options));+#else // for 3.0 and onwards 
 + entity.SetTableName(entity.DisplayName()); 
 +#endif
  }  }
- protected override void OnModelCreating(ModelBuilder modelBuilder) 
- { 
- modelBuilder.RemovePluralizingTableNameConvention(); 
- 
- base.OnModelCreating(modelBuilder); 
- } 
- public DbSet<Parent> Parents { get; set; } 
- public DbSet<Child> Children { get; set; } 
  }  }
 +}
 +</code>
 +
 +=== Update Entity Framework Tools if needed ===
 +PM> dotnet tool update --global dotnet-ef
 +
 +
 +=== Create a migration ===
 +<code>
 +dotnet ef migrations add InitialCreate --project MyProject.DAL
 +</code>
 +
 +=== Update the database ===
 +<code>
 +dotnet ef database update --project Mixer.DAL
 +</code>
  
 Main project: Main project:
nebolcontroller_netcore_mssql_adjustments.1627722305.txt.gz · Last modified: 2021/07/31 11:05 by nebol