Kodowanie pierwszego płynnego interfejsu API i właściwości nawigacji w tabeli łączenia

Mam cztery elementy, które chciałbym przetłumaczyć na tabele bazy danych za pomocą kodu najpierw płynnie api (używam modelu znalezionego na databaseanswers.org), ale nie jestem pewien, jak to zrobić. Problem, który mam, polega na tym, że SuggestedMenuId jest migrowany w dwóch różnych tabelach w kluczu złożonym (MenuCourse i CourseRecipeChoice).

Oto wiadomość, którą otrzymuję:

„Podczas generowania modelu wykryto jeden lub więcej błędów weryfikacji:

System.Data.Entity.Edm.EdmAssociationConstraint:: Liczba właściwości w zależnych i głównych rolach w ograniczeniu relacji musi być identyczna. "

Oto, co próbowałem w mojej klasie EntityTypeConfiguration i jest to oczywiście niepoprawne ...

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

Jaka jest poprawna składnia właściwości nawigacji i poprawna składnia dla płynnej składni API dla tabeli łączenia 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>

Klucze są następujące:

Sugerowane menu (Id)Menu Menu (Id, SuggestedMenuId)CourseRecipeChoice (Id, SuggestedMenuId, MenuCourseId, RecipeId) // to jest właściwie miejsce, w którym się mylę, ponieważ zgodnie z modelem, SuggestedMenuId to PK w SuggestedMenu i PF w MenuCourse i CourseRecipeChoice (czy to może być zły projekt?)Receptura (RecipeId)

questionAnswers(1)

yourAnswerToTheQuestion