From 5bfcab5958406623eb1205d4adeb5e329cc9cdfb Mon Sep 17 00:00:00 2001 From: Yuee Shiness Date: Fri, 19 May 2023 19:23:27 +0400 Subject: [PATCH 1/2] DB + model product fixes. --- ComputerStoreDatabaseImplement/Models/Product.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ComputerStoreDatabaseImplement/Models/Product.cs b/ComputerStoreDatabaseImplement/Models/Product.cs index 9369614..ef96852 100644 --- a/ComputerStoreDatabaseImplement/Models/Product.cs +++ b/ComputerStoreDatabaseImplement/Models/Product.cs @@ -45,8 +45,8 @@ namespace ComputerStoreDatabaseImplement.Models public virtual List Components { get; set; } = new(); [ForeignKey("ProductID")] - public virtual List Consignments { get; set; } = new(); - + public virtual List Consignments { get; set; } = new(); + public virtual Employee Employee { get; set; } public static Product Create(ComputerStoreDatabase context, ProductBindingModel model) { From e32bdbf76a7501909244369a66b7bb5f154da12f Mon Sep 17 00:00:00 2001 From: Yuee Shiness Date: Fri, 19 May 2023 19:23:45 +0400 Subject: [PATCH 2/2] db fixes --- ...20230519152102_RelationFixesV8.Designer.cs | 486 ++++++++++++++++++ .../20230519152102_RelationFixesV8.cs | 48 ++ .../ComputerStoreDatabaseModelSnapshot.cs | 11 +- 3 files changed, 535 insertions(+), 10 deletions(-) create mode 100644 ComputerStoreDatabaseImplement/Migrations/20230519152102_RelationFixesV8.Designer.cs create mode 100644 ComputerStoreDatabaseImplement/Migrations/20230519152102_RelationFixesV8.cs diff --git a/ComputerStoreDatabaseImplement/Migrations/20230519152102_RelationFixesV8.Designer.cs b/ComputerStoreDatabaseImplement/Migrations/20230519152102_RelationFixesV8.Designer.cs new file mode 100644 index 0000000..5f56b26 --- /dev/null +++ b/ComputerStoreDatabaseImplement/Migrations/20230519152102_RelationFixesV8.Designer.cs @@ -0,0 +1,486 @@ +// +using System; +using ComputerStoreDatabaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace ComputerStoreDatabaseImplement.Migrations +{ + [DbContext(typeof(ComputerStoreDatabase))] + [Migration("20230519152102_RelationFixesV8")] + partial class RelationFixesV8 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.5") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Component", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Price") + .HasColumnType("float"); + + b.HasKey("ID"); + + b.ToTable("Components"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Consignment", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("OrderID") + .HasColumnType("int"); + + b.Property("Price") + .HasColumnType("float"); + + b.HasKey("ID"); + + b.HasIndex("OrderID"); + + b.ToTable("Consignments"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ConsignmentProduct", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("ConsignmentID") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("ProductID") + .HasColumnType("int"); + + b.HasKey("ID"); + + b.HasIndex("ConsignmentID"); + + b.HasIndex("ProductID"); + + b.ToTable("ConsignmentProducts"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Employee", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("FirstName") + .HasColumnType("nvarchar(max)"); + + b.Property("LastName") + .HasColumnType("nvarchar(max)"); + + b.Property("MiddleName") + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("ID"); + + b.ToTable("Employees"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Order", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("DateCreate") + .HasColumnType("datetime2"); + + b.Property("DateImplement") + .HasColumnType("datetime2"); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("SellerID") + .HasColumnType("int"); + + b.Property("Status") + .HasColumnType("int"); + + b.HasKey("ID"); + + b.HasIndex("SellerID"); + + b.ToTable("Orders"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.PC", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("EmployeeID") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("RequestID") + .HasColumnType("int"); + + b.HasKey("ID"); + + b.HasIndex("EmployeeID"); + + b.HasIndex("RequestID"); + + b.ToTable("PCS"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Product", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("EmployeeID") + .HasColumnType("int"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Price") + .HasColumnType("float"); + + b.HasKey("ID"); + + b.HasIndex("EmployeeID"); + + b.ToTable("Products"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ProductComponent", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("ComponentID") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("ProductID") + .HasColumnType("int"); + + b.HasKey("ID"); + + b.HasIndex("ComponentID"); + + b.HasIndex("ProductID"); + + b.ToTable("ProductComponents"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Request", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("OrderID") + .HasColumnType("int"); + + b.Property("PCID") + .HasColumnType("int"); + + b.Property("Price") + .HasColumnType("float"); + + b.HasKey("ID"); + + b.HasIndex("OrderID"); + + b.ToTable("Requests"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.RequestComponent", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("ComponentID") + .HasColumnType("int"); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("PCID") + .HasColumnType("int"); + + b.Property("RequestID") + .HasColumnType("int"); + + b.HasKey("ID"); + + b.HasIndex("ComponentID"); + + b.HasIndex("RequestID"); + + b.ToTable("RequestComponents"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Seller", b => + { + b.Property("ID") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("ID")); + + b.Property("FirstName") + .HasColumnType("nvarchar(max)"); + + b.Property("LastName") + .HasColumnType("nvarchar(max)"); + + b.Property("MiddleName") + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Username") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("ID"); + + b.ToTable("Sellers"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Consignment", b => + { + b.HasOne("ComputerStoreDatabaseImplement.Models.Order", "Order") + .WithMany("_consignments") + .HasForeignKey("OrderID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Order"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ConsignmentProduct", b => + { + b.HasOne("ComputerStoreDatabaseImplement.Models.Consignment", "Consignment") + .WithMany("Products") + .HasForeignKey("ConsignmentID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerStoreDatabaseImplement.Models.Product", "Product") + .WithMany("Consignments") + .HasForeignKey("ProductID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Consignment"); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Order", b => + { + b.HasOne("ComputerStoreDatabaseImplement.Models.Seller", "Seller") + .WithMany("Orders") + .HasForeignKey("SellerID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Seller"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.PC", b => + { + b.HasOne("ComputerStoreDatabaseImplement.Models.Employee", "Employee") + .WithMany("PCs") + .HasForeignKey("EmployeeID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerStoreDatabaseImplement.Models.Request", "Request") + .WithMany("PersonalComputers") + .HasForeignKey("RequestID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + + b.Navigation("Request"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Product", b => + { + b.HasOne("ComputerStoreDatabaseImplement.Models.Employee", "Employee") + .WithMany("Products") + .HasForeignKey("EmployeeID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Employee"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.ProductComponent", b => + { + b.HasOne("ComputerStoreDatabaseImplement.Models.Component", "Component") + .WithMany("ConsignmentComponents") + .HasForeignKey("ComponentID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerStoreDatabaseImplement.Models.Product", "Product") + .WithMany("Components") + .HasForeignKey("ProductID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Product"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Request", b => + { + b.HasOne("ComputerStoreDatabaseImplement.Models.Order", "Order") + .WithMany("_requests") + .HasForeignKey("OrderID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Order"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.RequestComponent", b => + { + b.HasOne("ComputerStoreDatabaseImplement.Models.Component", "Component") + .WithMany("RequestComponents") + .HasForeignKey("ComponentID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("ComputerStoreDatabaseImplement.Models.Request", "Request") + .WithMany("PCs") + .HasForeignKey("RequestID") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Component"); + + b.Navigation("Request"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Component", b => + { + b.Navigation("ConsignmentComponents"); + + b.Navigation("RequestComponents"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Consignment", b => + { + b.Navigation("Products"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Employee", b => + { + b.Navigation("PCs"); + + b.Navigation("Products"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Order", b => + { + b.Navigation("_consignments"); + + b.Navigation("_requests"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Product", b => + { + b.Navigation("Components"); + + b.Navigation("Consignments"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Request", b => + { + b.Navigation("PCs"); + + b.Navigation("PersonalComputers"); + }); + + modelBuilder.Entity("ComputerStoreDatabaseImplement.Models.Seller", b => + { + b.Navigation("Orders"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/ComputerStoreDatabaseImplement/Migrations/20230519152102_RelationFixesV8.cs b/ComputerStoreDatabaseImplement/Migrations/20230519152102_RelationFixesV8.cs new file mode 100644 index 0000000..9adbaa3 --- /dev/null +++ b/ComputerStoreDatabaseImplement/Migrations/20230519152102_RelationFixesV8.cs @@ -0,0 +1,48 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace ComputerStoreDatabaseImplement.Migrations +{ + /// + public partial class RelationFixesV8 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Consignments_Products_ProductID", + table: "Consignments"); + + migrationBuilder.DropIndex( + name: "IX_Consignments_ProductID", + table: "Consignments"); + + migrationBuilder.DropColumn( + name: "ProductID", + table: "Consignments"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ProductID", + table: "Consignments", + type: "int", + nullable: true); + + migrationBuilder.CreateIndex( + name: "IX_Consignments_ProductID", + table: "Consignments", + column: "ProductID"); + + migrationBuilder.AddForeignKey( + name: "FK_Consignments_Products_ProductID", + table: "Consignments", + column: "ProductID", + principalTable: "Products", + principalColumn: "ID"); + } + } +} diff --git a/ComputerStoreDatabaseImplement/Migrations/ComputerStoreDatabaseModelSnapshot.cs b/ComputerStoreDatabaseImplement/Migrations/ComputerStoreDatabaseModelSnapshot.cs index af60199..1717487 100644 --- a/ComputerStoreDatabaseImplement/Migrations/ComputerStoreDatabaseModelSnapshot.cs +++ b/ComputerStoreDatabaseImplement/Migrations/ComputerStoreDatabaseModelSnapshot.cs @@ -56,15 +56,10 @@ namespace ComputerStoreDatabaseImplement.Migrations b.Property("Price") .HasColumnType("float"); - b.Property("ProductID") - .HasColumnType("int"); - b.HasKey("ID"); b.HasIndex("OrderID"); - b.HasIndex("ProductID"); - b.ToTable("Consignments"); }); @@ -326,10 +321,6 @@ namespace ComputerStoreDatabaseImplement.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("ComputerStoreDatabaseImplement.Models.Product", null) - .WithMany("Consignments") - .HasForeignKey("ProductID"); - b.Navigation("Order"); }); @@ -342,7 +333,7 @@ namespace ComputerStoreDatabaseImplement.Migrations .IsRequired(); b.HasOne("ComputerStoreDatabaseImplement.Models.Product", "Product") - .WithMany() + .WithMany("Consignments") .HasForeignKey("ProductID") .OnDelete(DeleteBehavior.Cascade) .IsRequired();