MysqlDbContext.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using Edge.Core.Domain.FccNozzleInfo;
  2. using Edge.Core.Domain.FccOilInfo;
  3. using Edge.Core.Domain.FccOrderInfo;
  4. using Edge.Core.Domain.FccStationInfo;
  5. using Edge.Core.Domain.FccTankInfo;
  6. using Microsoft.EntityFrameworkCore;
  7. using Microsoft.Extensions.Configuration;
  8. using Microsoft.Extensions.DependencyInjection;
  9. namespace Edge.Core.Core.database
  10. {
  11. public class MysqlDbContext : DbContext
  12. {
  13. public MysqlDbContext() { }
  14. [ActivatorUtilitiesConstructor]
  15. public MysqlDbContext(DbContextOptions<MysqlDbContext> options) : base(options) { }
  16. protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  17. {
  18. if (!optionsBuilder.IsConfigured)
  19. {
  20. /* Default constructor with no parameter init this class will use below appsettings.json*/
  21. IConfigurationRoot configuration = new ConfigurationBuilder()
  22. .SetBasePath(Directory.GetCurrentDirectory())
  23. .AddJsonFile("appsettings.Development.json")
  24. .Build();
  25. var connectionString = configuration.GetConnectionString("DefaultConnection");
  26. optionsBuilder.UseMySql(connectionString,ServerVersion.AutoDetect(connectionString));
  27. }
  28. }
  29. public DbSet<FccStationInfo> FccStationInfos { get; set; }
  30. public DbSet<FccOilInfo> OilInfos { get; set; }
  31. public DbSet<FccTankInfo> TankInfos { get; set; }
  32. public DbSet<FccNozzleInfo> NozzleInfos { get; set; }
  33. public DbSet<FccOrderInfo> fccOrderInfos { get; set; }
  34. protected override void OnModelCreating(ModelBuilder modelBuilder)
  35. {
  36. modelBuilder.Entity<FccTankInfo>()
  37. .HasOne(tankInfos => tankInfos.Oil)
  38. .WithMany(oilInfo => oilInfo.FccTankInfo)
  39. .HasForeignKey(tankInfo => tankInfo.OilId)
  40. .OnDelete(DeleteBehavior.Restrict);
  41. modelBuilder.Entity<FccNozzleInfo>()
  42. .HasOne(nozzleInfo => nozzleInfo.Tank)
  43. .WithMany(tankInfo => tankInfo.FccNozzleInfos)
  44. .HasForeignKey(nozzleInfo => nozzleInfo.TankId)
  45. .OnDelete(DeleteBehavior.Restrict);
  46. base.OnModelCreating(modelBuilder);
  47. }
  48. }
  49. }