MSDbContext.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using Microsoft.EntityFrameworkCore;
  2. using Microsoft.Extensions.Logging;
  3. using MS.DbContexts.Mappings;
  4. using MS.Entities.AccountingService_Models;
  5. using MS.Entities.Models;
  6. using System;
  7. namespace MS.DbContexts
  8. {
  9. public class MSDbContext : DbContext
  10. {
  11. //Add-Migration InitialCreate
  12. //Update-Database InitialCreate
  13. public MSDbContext(DbContextOptions<MSDbContext> options)
  14. : base(options)
  15. {
  16. }
  17. //此处用微软原生的控制台日志记录,如果使用NLog很可能数据库还没创建,造成记录日志到数据库性能下降(一直在尝试连接数据库,但是数据库还没创建)
  18. //此处使用静态实例,这样不会为每个上下文实例创建新的 ILoggerFactory 实例,这一点非常重要。 否则会导致内存泄漏和性能下降。
  19. //此处使用了Debug和console两种日志输出,会输出到控制台和调试窗口
  20. public static readonly ILoggerFactory MyLoggerFactory = LoggerFactory.Create(builder => builder.AddDebug().AddConsole());
  21. public DbSet<NozzleAssignments> NozzleAssignments { get; set; }
  22. public DbSet<PosTrxes> posTrxes { get; set; }
  23. public DbSet<PosTrxMopsDto> posTrxMopsDtos { get; set; }
  24. public DbSet<NozzleTransaction> nozzleTransactions { get; set; }
  25. public DbSet<FuelDetailsDto> fuelDetailsDtos { get; set; }
  26. public DbSet<PumpVolumeSummary> pumpVolumeSummaries { get; set; }
  27. public DbSet<PumpTransactionSummary> pumpTransactionSummaries { get; set; }
  28. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  29. {
  30. base.OnConfiguring(optionsBuilder);
  31. optionsBuilder.UseLoggerFactory(MyLoggerFactory);
  32. }
  33. protected override void OnModelCreating(ModelBuilder modelBuilder)
  34. {
  35. modelBuilder.ApplyConfiguration(new LogrecordMap());
  36. modelBuilder.ApplyConfiguration(new RoleMap());
  37. modelBuilder.ApplyConfiguration(new UserLoginMap());
  38. modelBuilder.ApplyConfiguration(new UserMap());
  39. modelBuilder.ApplyConfiguration(new CurrenciesMap());
  40. modelBuilder.ApplyConfiguration(new PosTrxesMap());
  41. modelBuilder.ApplyConfiguration(new PosTrxLineItemsMap());
  42. modelBuilder.Entity<Currencies>().HasNoKey();
  43. // modelBuilder.Entity<PosTrxes>()
  44. //.HasOne(p => p.Currency)
  45. //.WithOne()
  46. //.HasForeignKey<PosTrxes>(p => p.CurrencyId);
  47. modelBuilder.Entity<PosTrxes>()
  48. .Ignore(p => p.Currency);
  49. modelBuilder.Entity<PosItems>()
  50. .HasKey(p => p.Id);
  51. modelBuilder.Entity<PosTrxUnLock>()
  52. .HasKey(p => p.Id);
  53. modelBuilder.Entity<PosTrxMopsDto>()
  54. .HasNoKey(); // 标记为无主键实体
  55. modelBuilder.Entity<NozzleTransaction>()
  56. .HasNoKey(); // 标记为无主键实体
  57. modelBuilder.Entity<PumpTransactionSummary>()
  58. .HasNoKey(); // 标记为无主键实体
  59. modelBuilder.Entity<PumpVolumeSummary>()
  60. .HasNoKey(); // 标记为无主键实体
  61. modelBuilder.Entity<FuelDetailsDto>()
  62. .HasNoKey(); // 标记为无主键实体
  63. base.OnModelCreating(modelBuilder);
  64. }
  65. }
  66. }