Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Relacja jeden do jednego z innym kluczem podstawowym w EF 6.1 Code First

one-to-one związek z jawną właściwością FK (taką jak Twój PayGroup.SupervisorId ) nie jest obsługiwane.

Więc usuń tę właściwość z modelu:

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

i użyj następującego płynnego mapowania:

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

WithOptional() call określa dwie rzeczy. Po pierwsze, nie ma właściwości nawigacji odwrotnej w Employee klasy, a po drugie, że FK jest opcjonalny (Allow Nulls = true w tabeli).

Jeśli zdecydujesz się dodać właściwość odwróconej nawigacji

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

zmień go na WithOptional(e => e.PayGroup) .

Jeśli chcesz, aby było to wymagane (Allow Nulls = false w tabeli), a następnie użyj odpowiedniego WithRequiredDependent przeciążenie (zależne tutaj oznacza, że ​​Employee będzie zleceniodawcą i PayGroup będzie zależnym ).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Automatyczne usuwanie zablokowanych procesów w MS SQL Server

  2. SQL Server, używając tabeli jako kolejki

  3. Polecenie SQL INSERT działa, ale dane nie pojawiają się w tabeli

  4. Wydajność SQL:WHERE vs WHERE (ROW_NUMBER)

  5. Konwertuj tekst pola tekstowego na liczbę całkowitą