MysqlDbContext.cs 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using Edge.Core.Domain.FccMachineInfo;
  2. using Edge.Core.Domain.FccNozzleInfo;
  3. using Edge.Core.Domain.FccOilInfo;
  4. using Edge.Core.Domain.FccOrderInfo;
  5. using Edge.Core.Domain.FccStationInfo;
  6. using Edge.Core.Domain.FccTankInfo;
  7. using Microsoft.EntityFrameworkCore;
  8. using Microsoft.Extensions.Configuration;
  9. using Microsoft.Extensions.DependencyInjection;
  10. namespace Edge.Core.Core.database
  11. {
  12. public class MysqlDbContext : DbContext
  13. {
  14. public MysqlDbContext() { }
  15. [ActivatorUtilitiesConstructor]
  16. public MysqlDbContext(DbContextOptions<MysqlDbContext> options) : base(options) { }
  17. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  18. {
  19. if (!optionsBuilder.IsConfigured)
  20. {
  21. /* Default constructor with no parameter init this class will use below appsettings.json*/
  22. IConfigurationRoot configuration = new ConfigurationBuilder()
  23. .SetBasePath(Directory.GetCurrentDirectory())
  24. .AddJsonFile("appsettings.Development.json")
  25. .Build();
  26. var connectionString = configuration.GetConnectionString("DefaultConnection");
  27. optionsBuilder.UseMySql(connectionString,ServerVersion.AutoDetect(connectionString));
  28. }
  29. }
  30. public DbSet<FccStationInfo> FccStationInfos { get; set; }
  31. public DbSet<FccOilInfo> OilInfos { get; set; }
  32. public DbSet<FccTankInfo> TankInfos { get; set; }
  33. public DbSet<FccNozzleInfo> NozzleInfos { get; set; }
  34. public DbSet<FccOrderInfo> FccOrderInfos { get; set; }
  35. public DbSet<FccMachineInfo> FccMachineInfos { get; set; }
  36. protected override void OnModelCreating(ModelBuilder modelBuilder)
  37. {
  38. modelBuilder.Entity<FccTankInfo>()
  39. .HasOne(tankInfos => tankInfos.Oil)
  40. .WithMany(oilInfo => oilInfo.FccTankInfo)
  41. .HasForeignKey(tankInfo => tankInfo.OilId)
  42. .IsRequired(false) // 显式配置外键为可空
  43. .OnDelete(DeleteBehavior.Restrict);
  44. modelBuilder.Entity<FccNozzleInfo>()
  45. .HasOne(nozzleInfo => nozzleInfo.Tank)
  46. .WithMany(tankInfo => tankInfo.FccNozzleInfos)
  47. .HasForeignKey(nozzleInfo => nozzleInfo.TankId)
  48. .OnDelete(DeleteBehavior.Restrict);
  49. modelBuilder.Entity<FccNozzleInfo>()
  50. .HasOne(nozzleInfo => nozzleInfo.FccMachineInfo)
  51. .WithMany(machine => machine.fccNozzleInfos)
  52. .HasForeignKey(nozzle => nozzle.MachineId)
  53. .OnDelete(DeleteBehavior.Restrict);
  54. //modelBuilder.Entity<FccOrderInfo>(entity =>
  55. //{
  56. // entity.Property(order => order.EndTime).IsRequired(false);
  57. // entity.Property(order => order.PaymentTime).IsRequired(false);
  58. // entity.Property(order => order.PayType).IsRequired(false);
  59. // entity.Property(order => order.CloundOrderId).IsRequired(false);
  60. // entity.Property(order => order.AmountPayable).IsRequired(false);
  61. // entity.Property(order => order.RefundAmount).IsRequired(false);
  62. // entity.Property(order => order.UserName).IsRequired(false);
  63. // entity.Property(order => order.PhoneNumber).IsRequired(false);
  64. // entity.Property(order => order.PaymentName).IsRequired(false);
  65. // entity.Property(order => order.PumpCode).IsRequired(false);
  66. //});
  67. base.OnModelCreating(modelBuilder);
  68. }
  69. }
  70. }