057 Modify DBContext for the Modeling Lookup Resource of PhbkEmployee - chempkovsky/CS82ANGULAR GitHub Wiki

Using DBContext Wizard is absolutely necessary

The list of the Modeling Tables

Steps required to accomplish the task

Reminder

Using DBContext Wizard is absolutely necessary

The list of the Modeling Tables

  • We need to modify DBContext for the following list of the modeling tables
    • LpdEmpLastName
    • LpdEmpFirstName
    • LpdEmpSecondName
    • LprEmployee01
    • LprEmployee02
  • Since, these tables for modeling only all the modifications must be inside #if (!NOTMODELING) ... #endif-operator.

Steps required to accomplish the task

  • We do not describe step by step instructions
    • please repeat the steps similar to those described in the article 035.
  • Before you begin, please modify Directory.Build.props-file as it described in the Reset Directory Build props file

LpdEmpLastName

  • primary key and unique key
            modelBuilder.Entity<LpdEmpLastName>().HasAlternateKey(p => p.EmpLastName).HasName("LpdEmpLastNameUK");
            modelBuilder.Entity<LpdEmpLastName>().HasKey(p => p.EmpLastNameId);

LpdEmpFirstName

  • primary key and unique key
            modelBuilder.Entity<LpdEmpFirstName>().HasAlternateKey(p => p.EmpFirstName).HasName("LpdEmpFirstName");
            modelBuilder.Entity<LpdEmpFirstName>().HasKey(p => p.EmpFirstNameId);

LpdEmpSecondName

  • primary key and unique key
            modelBuilder.Entity<LpdEmpSecondName>().HasAlternateKey(p => p.EmpSecondName).HasName("LpdEmpSecondNameUK");
            modelBuilder.Entity<LpdEmpSecondName>().HasKey(p => p.EmpSecondNameId);

LprEmployee01

  • primary key and foreign keys. The order of the primary key fields is important.
            modelBuilder.Entity<LprEmployee01>().HasKey(p => new { p.EmpLastNameIdRef, p.EmpFirstNameIdRef, p.EmpSecondNameIdRef, p.EmployeeId });
            modelBuilder.Entity<LprEmployee01>().HasOne(d => d.Employee)
                .WithMany(m => m.EmployeeRefs01)
                .HasForeignKey(d => d.EmployeeId)
                .HasPrincipalKey(p => p.EmployeeId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprEmployee01>().HasOne(d => d.EmpLastNameDict)
                .WithMany(m => m.EmployeeRef01)
                .HasForeignKey(d => d.EmpLastNameIdRef)
                .HasPrincipalKey(p => p.EmpLastNameId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprEmployee01>().HasOne(d => d.EmpFirstNameDict)
                .WithMany(m => m.EmployeeRef01)
                .HasForeignKey(d => d.EmpFirstNameIdRef)
                .HasPrincipalKey(p => p.EmpFirstNameId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprEmployee01>().HasOne(d => d.EmpSecondNameDict)
                .WithMany(m => m.EmployeeRef01)
                .HasForeignKey(d => d.EmpSecondNameIdRef)
                .HasPrincipalKey(p => p.EmpSecondNameId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);

LprEmployee02

  • primary key and foreign keys. The order of the primary key fields is important.
            modelBuilder.Entity<LprEmployee02>().HasKey(p => new { p.DivisionIdRef, p.EmpLastNameIdRef, p.EmpFirstNameIdRef, p.EmpSecondNameIdRef, p.EmployeeId });
            modelBuilder.Entity<LprEmployee02>().HasOne(d => d.Employee)
                .WithMany(m => m.EmployeeRefs02)
                .HasForeignKey(d => d.EmployeeId)
                .HasPrincipalKey(p => p.EmployeeId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprEmployee02>().HasOne(d => d.EmpLastNameDict)
                .WithMany(m => m.EmployeeRef02)
                .HasForeignKey(d => d.EmpLastNameIdRef)
                .HasPrincipalKey(p => p.EmpLastNameId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprEmployee02>().HasOne(d => d.EmpFirstNameDict)
                .WithMany(m => m.EmployeeRef02)
                .HasForeignKey(d => d.EmpFirstNameIdRef)
                .HasPrincipalKey(p => p.EmpFirstNameId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprEmployee02>().HasOne(d => d.EmpSecondNameDict)
                .WithMany(m => m.EmployeeRef02)
                .HasForeignKey(d => d.EmpSecondNameIdRef)
                .HasPrincipalKey(p => p.EmpSecondNameId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprEmployee02>().HasOne(d => d.Division)
                .WithMany(m => m.EmployeeRefs02)
                .HasForeignKey(d => d.DivisionIdRef)
                .HasPrincipalKey(p => p.DivisionId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);

Reminder

  • All settings above along with DbSet-declarations must be inside #if (!NOTMODELING) ... #endif-operator.
  • Directory.Build.props-file must be modified again