sql >> Databasteknik >  >> RDS >> Sqlserver

En till en relation med olika primärnyckel i EF 6.1 Code First

one-to-one relation med explicit FK-egenskap (som din PayGroup.SupervisorId ) stöds inte.

Så ta bort den egenskapen från modellen:

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

och använd följande flytande mappning:

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

WithOptional() samtalet anger två saker. För det första att det inte finns någon invers navigationsegenskap i Employee klass, och för det andra att FK är valfritt (Allow Nulls = true i tabellen).

Om du bestämmer dig för att lägga till omvänd navigeringsegenskap

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

ändra det till WithOptional(e => e.PayGroup) .

Om du vill göra det obligatoriskt (Allow Nulls = false i tabellen), använd sedan motsvarande WithRequiredDependent överbelastning (beroende betyder här att Employee kommer att vara rektor och PayGroup kommer att vara beroende ).




  1. ssh först med mysqldb i python

  2. MySQL TEXT minnesallokering

  3. När jag anger en dateadd- eller datediff-kod får jag det här felet hela tiden ORA-00904 DATEADD Ogiltig IDENTIFIER.

  4. Hur FIND_IN_SET() fungerar i MariaDB