Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Връзка едно към едно с различен първичен ключ в EF 6.1 Code First

one-to-one връзка с изрично FK свойство (като вашия PayGroup.SupervisorId ) не се поддържа.

Така че премахнете това свойство от модела:

public class PayGroup
{
    public int Id { get; set; }
    public virtual Employee Supervisor { get; set; }
}

и използвайте следното плавно картографиране:

modelBuilder.Entity<PayGroup>()
    .HasRequired(e => e.Supervisor)
    .WithOptional()
    .Map(m => m.MapKey("SupervisorId"));

WithOptional() call уточнява две неща. Първо, няма свойство за обратна навигация в Employee клас и второ, че FK не е задължително (Allow Nulls = true в таблицата).

Ако решите да добавите свойство за обратна навигация

public class Employee
{
    public string EmployeeId { get; set; }
    public string FullName { get; set; }
    public virtual PayGroup PayGroup { get; set; } // <=
}

променете го на WithOptional(e => e.PayGroup) .

Ако искате да го направите задължително (Allow Nulls = false в таблицата), след това използвайте съответния WithRequiredDependent претоварване (зависимо тук означава, че Employee ще бъде директор и PayGroup ще бъде зависимият ).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате Azure Data Studio на Mac

  2. SQL Server 2008 -- изпълнявайте заявки паралелно

  3. Как да извикам уеб услуга от съхранена процедура на SQL Server

  4. SQL Server Count е бавен

  5. Бавно променящо се измерение - какво е чисто изпълнение тип 6