Add database models (Entity Framework)

This commit is contained in:
ShabOl 2024-05-15 20:43:24 +04:00
parent ca3570c197
commit f2b3b0f4ff
11 changed files with 253 additions and 1 deletions

View File

@ -5,7 +5,9 @@ VisualStudioVersion = 17.8.34511.84
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SushiBarView", "SushiBarView\SushiBarView.csproj", "{68873614-5B4D-4753-B03B-F28E73E17951}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SushiBarDataModels", "SushiBarDataModels\SushiBarDataModels.csproj", "{4A5A85B2-9B70-4493-B550-0E29FE82E9FD}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SushiBarDataModels", "SushiBarDataModels\SushiBarDataModels.csproj", "{4A5A85B2-9B70-4493-B550-0E29FE82E9FD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SushiBarDatabaseImplement", "SushiBarDatabaseImplement\SushiBarDatabaseImplement.csproj", "{135C846B-59EC-4803-B07C-8991C60C57D6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -21,6 +23,10 @@ Global
{4A5A85B2-9B70-4493-B550-0E29FE82E9FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4A5A85B2-9B70-4493-B550-0E29FE82E9FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4A5A85B2-9B70-4493-B550-0E29FE82E9FD}.Release|Any CPU.Build.0 = Release|Any CPU
{135C846B-59EC-4803-B07C-8991C60C57D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{135C846B-59EC-4803-B07C-8991C60C57D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{135C846B-59EC-4803-B07C-8991C60C57D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{135C846B-59EC-4803-B07C-8991C60C57D6}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -0,0 +1,28 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace SushiBarDatabaseImplement.Models
{
public class Cheque
{
[Key]
public int Id { get; set; }
public int? CustomerId { get; set; }
public virtual Customer? Customer { get; set; }
[Required]
public DateTime OrderDate { get; set; }
[Required]
public double TotalSum { get; set; }
public int? PromotionId { get; set; }
public virtual Promotion? Promotion { get; set; }
[ForeignKey("Cheque")]
public List<ChequeItem> ChequeItems { get; set; } = new();
}
}

View File

@ -0,0 +1,28 @@
using System.ComponentModel.DataAnnotations;
namespace SushiBarDatabaseImplement.Models
{
public class ChequeItem
{
[Key]
public int Id { get; set; }
[Required]
public int ChequeId { get; set; }
public virtual Cheque Cheque { get; set; } = new();
[Required]
public int DishId { get; set; }
public virtual Dish Dish { get; set; } = new();
[Required]
public int CookId { get; set; }
public virtual Cook Cook { get; set; } = new();
[Required]
public int Count { get; set; }
}
}

View File

@ -0,0 +1,20 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace SushiBarDatabaseImplement.Models
{
public class Cook
{
[Key]
public int Id { get; set; }
[Required]
public string Fio { get; set; } = string.Empty;
[Required]
public DateTime EmploymentDate { get; set; }
[ForeignKey("CookId")]
public List<ChequeItem> ChequeItems { get; set; } = new();
}
}

View File

@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace SushiBarDatabaseImplement.Models
{
public class Customer
{
[Key]
public int Id { get; set; }
[Required]
public string Fio { get; set; } = string.Empty;
[Required]
public DateTime BirthdayDate { get; set; }
[Required]
public double SumOfAllOrders { get; set; }
[ForeignKey("CustomerId")]
public List<Cheque> Cheques { get; set; } = new();
}
}

View File

@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace SushiBarDatabaseImplement.Models
{
public class Dish
{
[Key]
public int Id { get; set; }
[Required]
public string DishName { get; set; } = string.Empty;
[Required]
public string Category { get; set; } = string.Empty;
[ForeignKey("DishId")]
public virtual List<DishIngredient> DishIngredients { get; set; } = new();
[ForeignKey("DishId")]
public List<ChequeItem> ChequeItems { get; set; } = new();
}
}

View File

@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
namespace SushiBarDatabaseImplement.Models
{
public class DishIngredient
{
[Key]
public int Id { get; set; }
[Required]
public int DishId { get; set; }
public virtual Dish Dish { get; set; } = new();
[Required]
public int IngredientId { get; set; }
public virtual Ingredient Ingredient { get; set; } = new();
[Required]
public int Count { get; set; }
}
}

View File

@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace SushiBarDatabaseImplement.Models
{
public class Ingredient
{
[Key]
public int Id { get; set; }
[Required]
public string IngredientName { get; set; } = string.Empty;
[Required]
public string Unit { get; set; } = string.Empty;
[Required]
public double Cost { get; set; }
[ForeignKey("IngredientId")]
public virtual List<DishIngredient> DishIngredients { get; set; } = new();
}
}

View File

@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace SushiBarDatabaseImplement.Models
{
public class Promotion
{
[Key]
public int Id { get; set; }
[Required]
public string PromotionName { get; set; } = string.Empty;
[Required]
public float Discount { get; set; }
[Required]
public double TriggeringSum { get; set; }
[ForeignKey("PromotionId")]
public List<Cheque> Cheques { get; set; } = new();
}
}

View File

@ -0,0 +1,36 @@
using Microsoft.EntityFrameworkCore;
using SushiBarDatabaseImplement.Models;
namespace SushiBarDatabaseImplement
{
public class SushiBarDatabase : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder OptionsBuilder)
{
if (OptionsBuilder.IsConfigured == false)
{
OptionsBuilder.UseNpgsql(@"Host=192.168.56.101;Port=5436;Database=postgres;Username=postgres;Password=admin");
}
base.OnConfiguring(OptionsBuilder);
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
AppContext.SetSwitch("Npgsql.DisableDataTimeInfinityConversions", true);
}
public virtual DbSet<Dish> Dishes { get; set; }
public virtual DbSet<Ingredient> Ingredients { get; set; }
public virtual DbSet<DishIngredient> DishIngredients { get; set; }
public virtual DbSet<Cheque> Cheques { get; set; }
public virtual DbSet<ChequeItem> ChequeItems { get; set; }
public virtual DbSet<Cook> Cooks { get; set; }
public virtual DbSet<Customer> Customers { get; set; }
public virtual DbSet<Promotion> Promotions { get; set; }
}
}

View File

@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.19" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.19">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Npgsql" Version="8.0.3" />
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.18" />
</ItemGroup>
</Project>