PIbd-21_BatylkinaAO_MusoevD.../Canteen/CanteenDatabaseImplement/CanteenDatabase.cs
2023-05-14 22:24:37 +04:00

135 lines
5.5 KiB
C#

using CanteenDatabaseImplement.Models;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Migrations;
using System.Diagnostics.Contracts;
namespace CanteenDatabaseImplement
{
public class CanteenDatabase : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (optionsBuilder.IsConfigured == false)
{
optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-A68O3K0;Initial Catalog=CanteenDataBase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
}
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<DishProduct>()
.HasKey(dp => new { dp.DishId, dp.ProductId });
modelBuilder.Entity<DishProduct>()
.HasOne(dp => dp.Dish)
.WithMany(d => d.Products)
.HasForeignKey(dp => dp.DishId)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<DishProduct>()
.HasOne(dp => dp.Product)
.WithMany(p => p.Dishes)
.HasForeignKey(dp => dp.ProductId)
.OnDelete(DeleteBehavior.NoAction);
//=====================================
modelBuilder.Entity<LunchOrder>()
.HasKey(dp => new { dp.LunchId, dp.OrderId });
modelBuilder.Entity<LunchOrder>()
.HasOne(dp => dp.Lunch)
.WithMany(d => d.Orders)
.HasForeignKey(dp => dp.LunchId)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<LunchOrder>()
.HasOne(dp => dp.Order)
.WithMany(p => p.Lunches)
.HasForeignKey(dp => dp.OrderId)
.OnDelete(DeleteBehavior.NoAction);
//=====================================
modelBuilder.Entity<LunchProduct>()
.HasKey(dp => new { dp.LunchId, dp.ProductId });
modelBuilder.Entity<LunchProduct>()
.HasOne(dp => dp.Lunch)
.WithMany(d => d.Products)
.HasForeignKey(dp => dp.LunchId)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<LunchProduct>()
.HasOne(dp => dp.Product)
.WithMany(p => p.Lunches)
.HasForeignKey(dp => dp.ProductId)
.OnDelete(DeleteBehavior.NoAction);
//=====================================
modelBuilder.Entity<OrderCook>()
.HasKey(dp => new { dp.OrderId, dp.CookId });
modelBuilder.Entity<OrderCook>()
.HasOne(dp => dp.Order)
.WithMany(d => d.Cooks)
.HasForeignKey(dp => dp.OrderId)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<OrderCook>()
.HasOne(dp => dp.Cook)
.WithMany(p => p.Orders)
.HasForeignKey(dp => dp.CookId)
.OnDelete(DeleteBehavior.NoAction);
//=====================================
modelBuilder.Entity<OrderDish>()
.HasKey(dp => new { dp.OrderId, dp.DishId });
modelBuilder.Entity<OrderDish>()
.HasOne(dp => dp.Order)
.WithMany(d => d.Dishes)
.HasForeignKey(dp => dp.OrderId)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<OrderDish>()
.HasOne(dp => dp.Dish)
.WithMany(p => p.Orders)
.HasForeignKey(dp => dp.DishId)
.OnDelete(DeleteBehavior.NoAction);
//=====================================
modelBuilder.Entity<ProductCook>()
.HasKey(dp => new { dp.ProductId, dp.CookId });
modelBuilder.Entity<ProductCook>()
.HasOne(dp => dp.Product)
.WithMany(d => d.Cooks)
.HasForeignKey(dp => dp.ProductId)
.OnDelete(DeleteBehavior.NoAction);
modelBuilder.Entity<ProductCook>()
.HasOne(dp => dp.Cook)
.WithMany(p => p.Products)
.HasForeignKey(dp => dp.CookId)
.OnDelete(DeleteBehavior.NoAction);
//=====================================
modelBuilder.Entity<Order>()
.HasOne(b => b.Visitor)
.WithMany(a => a.Orders)
.OnDelete(DeleteBehavior.NoAction);
//=====================================
}
public virtual DbSet<Cook> Cooks { set; get; }
public virtual DbSet<OrderCook> OrderCook { set; get; }
public virtual DbSet<Dish> Dishes { set; get; }
public virtual DbSet<Lunch> Lunches { set; get; }
public virtual DbSet<LunchOrder> LunchOrder { set; get; }
public virtual DbSet<Manager> Managers { set; get; }
public virtual DbSet<Order> Orders { set; get; }
public virtual DbSet<Product> Products { set; get; }
public virtual DbSet<ProductCook> ProductCook { set; get; }
public virtual DbSet<LunchProduct> LunchProduct { set; get; }
public virtual DbSet<OrderDish> OrderDish { set; get; }
public virtual DbSet<DishProduct> DishProduct { set; get; }
public virtual DbSet<Tableware> Tablewares { set; get; }
public virtual DbSet<Visitor> Visitors { set; get; }
}
}