sql >> Databáze >  >> RDS >> Sqlserver

Vztah jeden k jednomu s odlišným primárním klíčem v EF 6.1 Code First

one-to-one vztah s explicitní vlastností FK (jako je vaše PayGroup.SupervisorId ) není podporováno.

Odstraňte tedy tuto vlastnost z modelu:

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

a použijte následující plynulé mapování:

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

WithOptional() volání specifikuje dvě věci. Za prvé, v Employee neexistuje žádná vlastnost inverzní navigace class a za druhé, že FK je volitelný (Allow Nulls = true v tabulce).

Pokud se rozhodnete přidat vlastnost inverzní navigace

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

změňte jej na WithOptional(e => e.PayGroup) .

Pokud chcete, aby to bylo povinné (Allow Nulls = false v tabulce), pak použijte odpovídající WithRequiredDependent přetížení (Závislý zde znamená, že Employee bude ředitelem a PayGroup bude závislou ).




  1. Jak používat MAX v MySQL?

  2. Je možné použít klauzuli WHERE k výběru všech záznamů v příkazu SQL?

  3. SQL Server v.Next:Výkon STRING_AGG, část 2

  4. Výsledkem tiskového dotazu je tabulka