using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using MS.DbContexts.Mappings; using MS.Entities.AccountingService_Models; using MS.Entities.Models; using System; namespace MS.DbContexts { public class MSDbContext : DbContext { //Add-Migration InitialCreate //Update-Database InitialCreate public MSDbContext(DbContextOptions options) : base(options) { } //此处用微软原生的控制台日志记录,如果使用NLog很可能数据库还没创建,造成记录日志到数据库性能下降(一直在尝试连接数据库,但是数据库还没创建) //此处使用静态实例,这样不会为每个上下文实例创建新的 ILoggerFactory 实例,这一点非常重要。 否则会导致内存泄漏和性能下降。 //此处使用了Debug和console两种日志输出,会输出到控制台和调试窗口 public static readonly ILoggerFactory MyLoggerFactory = LoggerFactory.Create(builder => builder.AddDebug().AddConsole()); public DbSet NozzleAssignments { get; set; } public DbSet posTrxes { get; set; } public DbSet posTrxMopsDtos { get; set; } public DbSet nozzleTransactions { get; set; } public DbSet fuelDetailsDtos { get; set; } public DbSet pumpVolumeSummaries { get; set; } public DbSet pumpTransactionSummaries { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); optionsBuilder.UseLoggerFactory(MyLoggerFactory); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.ApplyConfiguration(new LogrecordMap()); modelBuilder.ApplyConfiguration(new RoleMap()); modelBuilder.ApplyConfiguration(new UserLoginMap()); modelBuilder.ApplyConfiguration(new UserMap()); modelBuilder.ApplyConfiguration(new CurrenciesMap()); modelBuilder.ApplyConfiguration(new PosTrxesMap()); modelBuilder.ApplyConfiguration(new PosTrxLineItemsMap()); modelBuilder.Entity().HasNoKey(); // modelBuilder.Entity() //.HasOne(p => p.Currency) //.WithOne() //.HasForeignKey(p => p.CurrencyId); modelBuilder.Entity() .Ignore(p => p.Currency); modelBuilder.Entity() .HasKey(p => p.Id); modelBuilder.Entity() .HasKey(p => p.Id); modelBuilder.Entity() .HasNoKey(); // 标记为无主键实体 modelBuilder.Entity() .HasNoKey(); // 标记为无主键实体 modelBuilder.Entity() .HasNoKey(); // 标记为无主键实体 modelBuilder.Entity() .HasNoKey(); // 标记为无主键实体 modelBuilder.Entity() .HasNoKey(); // 标记为无主键实体 base.OnModelCreating(modelBuilder); } } }