sql >> Database >  >> RDS >> Sqlserver

Een-op-een relatie met verschillende primaire sleutel in EF 6.1 Code First

one-to-one relatie met expliciete FK-eigenschap (zoals uw PayGroup.SupervisorId ) wordt niet ondersteund.

Dus verwijder die eigenschap uit het model:

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

en gebruik de volgende vloeiende mapping:

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

De WithOptional() oproep specificeert twee dingen. Ten eerste dat er geen inverse navigatie-eigenschap is in Employee klasse, en ten tweede dat de FK optioneel is (Allow Nulls = true in de tabel).

Als u besluit een eigenschap voor omgekeerde navigatie toe te voegen

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

verander het in WithOptional(e => e.PayGroup) .

Als je het verplicht wilt maken (Allow Nulls = false in de tabel), gebruik dan de corresponderende WithRequiredDependent overbelasting (Afhankelijk betekent hier dat de Employee wordt de hoofd en PayGroup zal de afhankelijke . zijn ).




  1. Hoe voeg ik een record in met alleen standaardwaarden?

  2. Kolomsortering converteren naar standaard tabel/database

  3. Dichtstbijzijnde match, deel 1

  4. MySQL-tijdwaarde in query 838:59:59?