using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using FaKrosnoEfDataModel.Entities; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; namespace FaKrosnoEfDataModel { public class FaKrosnoDbContext : DbContext { public FaKrosnoDbContext(DbContextOptions options) : base(options) { } public DbSet Purchasers { get; set; } public DbSet Recipients { get; set; } public DbSet ScheduleOrders { get; set; } public DbSet ScheduleOrderDetails { get; set; } public DbSet ScheduleOrderDetailDetails { get; set; } public DbSet ScheduleOrderDetailDetailMiscs { get; set; } public DbSet ScheduleOrderDetailMiscs { get; set; } public DbSet ScheduleOrderMiscs { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); var connectionString = configuration.GetConnectionString("FaKrosnoConnection"); optionsBuilder.UseSqlServer(connectionString, options => options.CommandTimeout(300)); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity().ToTable("purchaser"); modelBuilder.Entity().ToTable("recipient") .HasOne(p => p.Purchaser) .WithMany(p => p.Recipients) .HasForeignKey(p => p.PurchaserID); modelBuilder.Entity().ToTable("schedule_order") .HasOne(s => s.Recipient) .WithMany(r => r.ScheduleOrders) .HasForeignKey(s => s.RecipientID); modelBuilder.Entity().ToTable("schedule_order_detail") .HasOne(s => s.ScheduleOrder) .WithMany(s => s.ScheduleOrderDetails) .HasForeignKey(s => s.ScheduleOrderID); modelBuilder.Entity().ToTable("schedule_order_detail_detail") .HasOne(s => s.ScheduleOrderDetail) .WithMany(s => s.ScheduleOrderDetailDetails) .HasForeignKey(s => s.ScheduleOrderDetailID); modelBuilder.Entity().ToTable("schedule_order_detail_detail_misc") .HasOne(s => s.ScheduleOrderDetailDetail) .WithMany(s => s.ScheduleOrderDetailDetailMiscs) .HasForeignKey(s => s.ScheduleOrderDetailDetailID); modelBuilder.Entity().ToTable("schedule_order_detail_misc") .HasOne(s => s.ScheduleOrderDetail) .WithMany(s => s.ScheduleOrderDetailMiscs) .HasForeignKey(s => s.ScheduleOrderDetailID); modelBuilder.Entity().ToTable("schedule_order_misc") .HasOne(s => s.ScheduleOrder) .WithMany(s => s.ScheduleOrderMiscs) .HasForeignKey(s => s.ScheduleOrderID); modelBuilder.Entity(entity => entity.Property(x => x.Price).IsRequired(false)); modelBuilder.Entity(entity => entity.Property(x => x.Label).IsRequired(false)); modelBuilder.Entity(entity => entity.Property(x => x.Label).IsRequired(false)); modelBuilder.Entity(entity => { entity.Property(x => x.SccDesc).IsRequired(false); entity.Property(x => x.QtyType).IsRequired(false); entity.Property(x => x.QtyDesc).IsRequired(false); entity.Property(x => x.ShipDate).IsRequired(false); }); } } }