using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata; namespace Packt.Shared { public partial class NorthwindContext : DbContext { public NorthwindContext() { } public NorthwindContext(DbContextOptions options) : base(options) { } public virtual DbSet Categories { get; set; } = null!; public virtual DbSet Customers { get; set; } = null!; public virtual DbSet Employees { get; set; } = null!; public virtual DbSet EmployeeTerritories { get; set; } = null!; public virtual DbSet Orders { get; set; } = null!; public virtual DbSet OrderDetails { get; set; } = null!; public virtual DbSet Products { get; set; } = null!; public virtual DbSet Shippers { get; set; } = null!; public virtual DbSet Suppliers { get; set; } = null!; public virtual DbSet Territories { get; set; } = null!; protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { string dir = Environment.CurrentDirectory; string path = string.Empty; if (dir.EndsWith("net7.0")) { // Running in the \bin\\net7.0 directory. path = Path.Combine("..", "..", "..", "..", "Northwind.db"); } else { // Running in the directory. path = Path.Combine("..", "Northwind.db"); } optionsBuilder.UseSqlite($"Filename={path}"); } } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(entity => { entity.HasKey(e => new { e.OrderId, e.ProductId }); entity.HasOne(d => d.Order) .WithMany(p => p.OrderDetails) .HasForeignKey(d => d.OrderId) .OnDelete(DeleteBehavior.ClientSetNull); entity.HasOne(d => d.Product) .WithMany(p => p.OrderDetails) .HasForeignKey(d => d.ProductId) .OnDelete(DeleteBehavior.ClientSetNull); }); modelBuilder.Entity() .Property(product => product.UnitPrice) .HasConversion(); OnModelCreatingPartial(modelBuilder); } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); } }