Las propiedades de navegación y la API de Code First Fluent en una tabla de unión

Tengo cuatro entidades que me gustaría traducir en tablas de base de datos a través del código de la primera API fluida (estoy usando un modelo que se encuentra en databaseanswers.org), pero no estoy seguro de cómo hacerlo. El problema que tengo es que SuggestedMenuId se migra a través de dos tablas diferentes en una clave compuesta (MenuCourse y CourseRecipeChoice).

Aquí está el mensaje que estoy recibiendo:

"Se detectaron uno o más errores de validación durante la generación del modelo:

\ tSystem.Data.Entity.Edm.EdmAssociationConstraint:: el número de propiedades en los roles de dependiente y principal en una restricción de relación debe ser idéntico ".

Esto es lo que he intentado en mi clase EntityTypeConfiguration y obviamente es incorrecto ...

<code>public class CourseRecipeChoiceConfiguration : EntityTypeConfiguration<CourseRecipeChoice>
{
    public CourseRecipeChoiceConfiguration()
    {
        HasKey(crc => new { crc.Id});
        HasRequired(r => r.Recipe).WithMany(crc => crc.CourseRecipeChoices).HasForeignKey(crc => crc.RecipeId);
        HasRequired(m => m.MenuCourse).WithMany(crc => crc.CourseRecipeChoices).HasForeignKey(crc => crc.MenuCourseId);
        HasRequired(m => m.MenuCourse).WithMany(crc => crc.CourseRecipeChoices).HasForeignKey(crc => crc.SuggestedMenu_MenuCourseId);
    }
}
</code>

¿Cuál es la sintaxis correcta para las propiedades de navegación y la sintaxis correcta para la sintaxis de la API fluida para la tabla de combinación CourseRecipeChoice?

<code>public class SuggestedMenu
{
    public int SuggestedMenuId { get; set; }

    public virtual ICollection<MenuCourse> MenuCourses { get; set; }
}

public class MenuCourse
{
    public int Id { get; set; }
    public int SuggestedMenuId { get; set; }

    public SuggestedMenu SuggestedMenu { get; set; }
    public virtual ICollection<CourseRecipeChoice> CourseRecipeChoices { get; set; }
}

public class CourseRecipeChoice
{
    public int SuggestedMenuId { get; set; }
    public int MenuCourseId { get; set; }
    public int Id { get; set; }
    public int RecipeId { get; set; }

    //How do I represent the navigation properties in this class? 

}

public class Recipe
{
    public int RecipeId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    public ICollection<CourseRecipeChoice> CourseRecipeChoices { get; set; }
}
</code>

Las claves son las siguientes:

SugeridoMenú (Id)MenuCourse (Id, SuggestedMenuId)CourseRecipeChoice (Id, SuggestedMenuId, MenuCourseId, RecipeId) // aquí es donde realmente me confundo porque, según el modelo, SuggestedMenuId es un PK en SuggestedMenu y un PF en MenuCourse y CourseRecipeChoice (¿esto podría ser un mal diseño?)Receta (RecipeId)

Respuestas a la pregunta(1)

Su respuesta a la pregunta