Codifique primeiro API fluente e propriedades de navegação em uma tabela de associação

Eu tenho quatro entidades que eu gostaria de traduzir em tabelas de banco de dados via código primeiro api fluente (estou usando um modelo encontrado em databaseanswers.org), mas não tenho certeza de como. O problema que estou tendo é que SuggestedMenuId está sendo migrado através de duas tabelas diferentes em uma chave composta (MenuCourse e CourseRecipeChoice).

Aqui está a mensagem que estou recebendo:

"Um ou mais erros de validação foram detectados durante a geração do modelo:

\ tSystem.Data.Entity.Edm.EdmAssociationConstraint:: O número de propriedades nas Funções Dependente e Principal em uma restrição de relacionamento deve ser idêntico. "

Aqui está o que eu tentei na minha classe EntityTypeConfiguration e é obviamente incorreto ...

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

Qual é a sintaxe correta para as propriedades de navegação e a sintaxe correta para a sintaxe fluida da API para a tabela de junção 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>

As chaves são as seguintes:

SuggestedMenu (Id)MenuCurso (Id, SuggestedMenuId)CourseRecipeChoice (Id, SuggestedMenuId, MenuCourseId, RecipeId) // isso é onde eu fico confuso porque de acordo com o modelo, SuggestedMenuId é um PK no SuggestedMenu e um PF no MenuCourse e CourseRecipeChoice (isso poderia ser apenas um design ruim?)Receita (RecipeId)

questionAnswers(1)

yourAnswerToTheQuestion