Skip to content

057 Modify DBContext for the Modeling Lookup Resource of PhbkEmployee

chempkovsky edited this page May 30, 2022 · 1 revision

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
Clone this wiki locally