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
- primary key and unique key
modelBuilder.Entity<LpdPhone>().HasAlternateKey(p => p.Phone).HasName("LpdPhoneUK");
modelBuilder.Entity<LpdPhone>().HasKey(p => p.LpdPhoneId);
- 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);
- 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);
- 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);
- 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);
- All settings above along with
DbSet
-declarations must be inside #if (!NOTMODELING) ... #endif
-operator.
-
Directory.Build.props
-file must be modified again