075 Modify DBContext for the Modeling Lookup Resource of PhbkPhone - chempkovsky/CS82ANGULAR GitHub Wiki

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
    • LpdPhone
    • LprPhone01
    • LprPhone02
    • LprPhone03
    • LprPhone04
  • 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

LpdPhone

  • primary key and unique key
            modelBuilder.Entity<LpdPhone>().HasAlternateKey(p => p.Phone).HasName("LpdPhoneUK");
            modelBuilder.Entity<LpdPhone>().HasKey(p => p.LpdPhoneId);

LprPhone01

  • primary key and foreign keys. The order of the primary key fields is important.
            modelBuilder.Entity<LprPhone01>().HasKey(p => new { p.LpdPhoneIdRef, p.PhoneId });
            modelBuilder.Entity<LprPhone01>().HasOne(d => d.Phone)
                .WithMany(m => m.PhoneRefs01)
                .HasForeignKey(d => d.PhoneId)
                .HasPrincipalKey(p => p.PhoneId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprPhone01>().HasOne(d => d.PhoneDict)
                .WithMany(m => m.PhoneRef01)
                .HasForeignKey(d => d.LpdPhoneIdRef)
                .HasPrincipalKey(p => p.LpdPhoneId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);

LprPhone02

  • primary key and foreign keys. The order of the primary key fields is important.
            modelBuilder.Entity<LprPhone02>().HasKey(p => new { p.EmployeeIdRef, p.LpdPhoneIdRef, p.PhoneId });
            modelBuilder.Entity<LprPhone02>().HasOne(d => d.Phone)
                .WithMany(m => m.PhoneRefs02)
                .HasForeignKey(d => d.PhoneId)
                .HasPrincipalKey(p => p.PhoneId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprPhone02>().HasOne(d => d.PhoneDict)
                .WithMany(m => m.PhoneRef02)
                .HasForeignKey(d => d.LpdPhoneIdRef)
                .HasPrincipalKey(p => p.LpdPhoneId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprPhone02>().HasOne(d => d.Employee)
                .WithMany(m => m.PhoneRefs02)
                .HasForeignKey(d => d.EmployeeIdRef)
                .HasPrincipalKey(p => p.EmployeeId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);

LprPhone03

  • primary key and foreign keys. The order of the primary key fields is important.
            modelBuilder.Entity<LprPhone03>().HasKey(p => new { p.PhoneTypeIdRef, p.LpdPhoneIdRef, p.PhoneId });
            modelBuilder.Entity<LprPhone03>().HasOne(d => d.Phone)
                .WithMany(m => m.PhoneRefs03)
                .HasForeignKey(d => d.PhoneId)
                .HasPrincipalKey(p => p.PhoneId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprPhone03>().HasOne(d => d.PhoneDict)
                .WithMany(m => m.PhoneRef03)
                .HasForeignKey(d => d.LpdPhoneIdRef)
                .HasPrincipalKey(p => p.LpdPhoneId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprPhone03>().HasOne(d => d.PhoneType)
                .WithMany(m => m.PhoneRefs03)
                .HasForeignKey(d => d.PhoneTypeIdRef)
                .HasPrincipalKey(p => p.PhoneTypeId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);

LprPhone04

  • primary key and foreign keys. The order of the primary key fields is important.
            modelBuilder.Entity<LprPhone04>().HasKey(p => new { p.EmployeeIdRef, p.PhoneTypeIdRef, p.LpdPhoneIdRef, p.PhoneId });
            modelBuilder.Entity<LprPhone04>().HasOne(d => d.PhoneDict)
                .WithMany(m => m.PhoneRef04)
                .HasForeignKey(d => d.LpdPhoneIdRef)
                .HasPrincipalKey(p => p.LpdPhoneId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprPhone04>().HasOne(d => d.Phone)
                .WithMany(m => m.PhoneRefs04)
                .HasForeignKey(d => d.PhoneId)
                .HasPrincipalKey(p => p.PhoneId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprPhone04>().HasOne(d => d.Employee)
                .WithMany(m => m.PhoneRefs04)
                .HasForeignKey(d => d.EmployeeIdRef)
                .HasPrincipalKey(p => p.EmployeeId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.NoAction);
            modelBuilder.Entity<LprPhone04>().HasOne(d => d.PhoneType)
                .WithMany(m => m.PhoneRefs04)
                .HasForeignKey(d => d.PhoneTypeIdRef)
                .HasPrincipalKey(p => p.PhoneTypeId)
                .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
⚠️ **GitHub.com Fallback** ⚠️