Code Erste Migration, wenn Entitäten Querverweise mit Fremdschlüsseln haben

Ich habe Modelle, die aufeinander verweisen:

public class Dept
{
    [Key]
    public int DeptId { get; set; }

    [ForeignKey("ManagerId")]
    public Emp Manager { get; set; }

    public int? ManagerId { get; set; }

    public string DeptName { get; set; }
}

public class Emp
{
    [Key]
    public int EmpId { get; set; }

    [Required]
    [ForeignKey("DeptId")]
    public Dept Dept { get; set; }

    public int DeptId { get; set; }

    public string Name { get; set; }
}

Wenn ich Add-Migration aufrufe, erhalte ich folgende Fehlermeldung:

Das ForeignKeyAttribute für die Eigenschaft 'Manager' vom Typ 'App.Dept' ist ungültig. Der Fremdschlüsselname 'ManagerId' wurde im abhängigen Typ 'App.Emp' nicht gefunden. Der Wert "Name" sollte eine durch Kommas getrennte Liste von Fremdschlüsseleigenschaftsnamen sein.

Was muss ich tun, um eine Migration mit diesen Tabellen zu erstellen?

UPD: Impliziter optionaler Manager löst das Problem nicht:

modelBuilder.Entity<Emp>().HasRequired(_ => _.Dept).WithOptional(_ => _.Manager);

UPD2: Abteilung: Emp Beziehung ist 1: 0..1

UPD3: Vielleicht wird eine andere Relation zum Abteilungsmodell hinzugefügt, aber es wird auch 1: 0..1: @ se

[ForeignKey("ManagerId")]
public Emp CTO { get; set; }
public int? CTOId { get; set; }

Es ist keine Eins-zu-Viele-Beziehung: Eine Abteilung hat null oder einen Manager und null oder einen CTO. Im Moment habe ich nur eine Beziehung, aber ich möchte das Feld ManagerId benennen, keine EmpId.

UPD4: Schema vom Anfang meiner Frage mit zwei Primär- / Fremdschlüsselrelationen (Dept.DeptId / Emp.DeptId, Emp.EmpId / Dept.ManagerId) funktioniert in einfachem SQL. Ich kenne Problemumgehungen mit zusätzlicher Tabelle oder ohne Fremdschlüssel, benötige jedoch eine Antwort, wie das obige Arbeitsschema erstellt wird oder warum es in EF nicht funktioniert.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage