using System; using System.Net.Http; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.InMemory; using WD7UVN_HFT_2023241.Models; namespace WD7UVN_HFT_2023241.Repository { public static class Database { public static CompanyDbContext Context = new CompanyDbContext(); } public class CompanyDbContext : DbContext { //Tables public DbSet Customers { get; set; } public DbSet Employees { get; set; } public DbSet Maintainers { get; set; } public DbSet Services { get; set; } public CompanyDbContext() { this.Database.EnsureCreated(); } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder .UseInMemoryDatabase("company"); } } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity(customer => customer .HasOne() .WithMany() .HasForeignKey(customer => customer.SERVICE_ID) .OnDelete(DeleteBehavior.Cascade)); modelBuilder.Entity(service => service .HasOne() .WithMany() .HasForeignKey(service => service.MAINTAINER_ID) .OnDelete(DeleteBehavior.SetNull)); modelBuilder.Entity(team => team .HasOne() .WithMany() .HasForeignKey(team => team.LEADER_ID) .OnDelete(DeleteBehavior.SetNull)); modelBuilder.Entity(emp => emp .HasOne() .WithMany() .HasForeignKey(emp => emp.MANAGER_ID) .OnDelete(DeleteBehavior.SetNull)); //loading test values modelBuilder.Entity().HasData( new Customer{ NAME = "Szemed Fénye Optika Kft.", ID = 1, SERVICE_ID = 1} ); modelBuilder.Entity().HasData( new Service{ NAME = "Microsoft Exchange", ID = 1, PORT = 443, IP = "10.42.567.3", MAINTAINER_ID = 1} ); modelBuilder.Entity().HasData( new MaintainerTeam{ ID = 1, NAME = "Microsoft Team", LEADER_ID = 2} ); modelBuilder.Entity().HasData( new Employee{ ID = 1, NAME = "Gipsz Jakab", MANAGER_ID = 2, MAINTAINER_ID = 1}, new Employee{ NAME = "Székely Csaba", ID = 3, MANAGER_ID = 2, MAINTAINER_ID = 1}, new Employee{ NAME = "Nagy Krisztina", ID = 2, MAINTAINER_ID = 1} ); } } }