using DG.EntityFramework; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Diagnostics; using Microsoft.Extensions.Logging; namespace Zxd.EntityFramework { public class CrmDbContext : DbContext { public CrmDbContext(DbContextOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development") { var loggerFactory = new LoggerFactory(); loggerFactory.AddProvider(new EFLoggerProvider()); optionsBuilder.UseLoggerFactory(loggerFactory); } optionsBuilder.ConfigureWarnings(b => b.Ignore(CoreEventId.ContextInitialized)); base.OnConfiguring(optionsBuilder); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .HasOne(x => x.Module) .WithMany(x => x.Product) .HasForeignKey(x => x.Moduleid); modelBuilder.Entity() .HasOne(x => x.ProductGroup) .WithMany(x => x.Product) .HasForeignKey(x => x.Groupid); modelBuilder.Entity() .HasOne(x => x.ProductGroup) .WithMany(x => x.ProductPackage) .HasForeignKey(x => x.Groupid); modelBuilder.Entity() .HasOne(x => x.Product) .WithMany(x => x.ProductTeachers) .HasPrincipalKey(x => x.Id) .HasForeignKey(x => x.ProductId); modelBuilder.Entity() .HasOne(x => x.Teacher) .WithMany(x => x.ProductTeachers) .HasPrincipalKey(x => x.Code) .HasForeignKey(x => x.TeacherCode); modelBuilder.Entity().HasKey(c => new { c.moduleid, c.orderid }); base.OnModelCreating(modelBuilder); } public DbSet Product { get; set; } public DbSet ProductPackage { get; set; } public DbSet ProductGroup { get; set; } public DbSet ProductTeacher { get; set; } public DbSet Teacher { get; set; } public DbSet Module { get; set; } public DbSet UserModule { get; set; } } }