Clave externa de Entity Framework como código de clave principal primero

Tengo dos modelos de código primero, Foo y FooState donde Foo tiene un FooState opcional.

public class Foo
{
    [Key]
    public int FooId { get; set; }

    public FooState FooState { get; set; }
}

public class FooState
{
    [Key]
    public int FooStateId { get; set; }

    [Required]
    public int State { get; set; }

    [Required]
    public Foo Foo { get; set; }
}

Esto funciona bien, sin embargo, cuando intento agregar la clave externa a FooState como tal

public class FooState
{
    [Key]
    public int FooStateId { get; set; }

    [Required]
    public int State { get; set; }

    [ForeignKey("Foo")]
    [Required]
    public int FooId
    public Foo Foo { get; set; }
}

Todo se cae porque FooStateId realmente está usando FooId como su clave principal. Esto tiene sentido desde el punto de vista de una base de datos.

Sin embargo, me gustaría no tener que rellenar una instancia de Foo al guardar el registro de FooState pero conservar el atributo requerido.

Esto me permitiría enviar un FooId y un estado en un dto y no tener que recuperar todo el objeto Foo de la base de datos si quiero hacer un cambio a su estado.

¿Cómo debería configurarlo primero con el código EF?

Respuestas a la pregunta(1)

Su respuesta a la pregunta