Código Primera migración cuando las entidades tienen referencias cruzadas con claves foráneas

Tengo modelos que tienen referencias entre sí:

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; }
}

Cuando llamo Add-Migration, recibo un error:

ForeignKeyAttribute en la propiedad 'Manager' en el tipo 'App.Dept' no es válido. El nombre de clave externa 'ManagerId' no se encontró en el tipo dependiente 'App.Emp'. El valor del Nombre debe ser una lista separada por comas de nombres de propiedades de clave externa.

¿Qué debo hacer para crear la migración con estas tablas?

UPD: El administrador opcional implícito no resuelve el problema:

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

UPD2: Dept: la relación Emp es1: 0..1

UPD3: Tal vez se agregará otra relación al modelo Dept, pero también será 1: 0..1:

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

No es una relación de uno a muchos: un departamento tiene cero o un gerente, y cero o un CTO. Por el momento solo tengo una relación, pero quiero nombrar el campo ManagerId, no un EmpId.

UPD4: El esquema desde el principio de mi pregunta con dos relaciones de claves principales / externas (Dept.DeptId / Emp.DeptId, Emp.EmpId / Dept.ManagerId) funciona en SQL simple. Conozco soluciones alternativas con tabla adicional o sin claves foráneas, pero necesito una respuesta sobre cómo hacer el esquema de trabajo anterior o por qué no funciona en EF.

Respuestas a la pregunta(2)

Su respuesta a la pregunta