Code First Fluent API- und Navigationseigenschaften in einer Verknüpfungstabelle

Ich habe vier Entitäten, die ich über code first fluent api in Datenbanktabellen übersetzen möchte (ich verwende ein Modell von databaseanswers.org), aber ich bin nicht sicher, wie. Das Problem, das ich habe, ist, dass SuggestedMenuId über zwei verschiedene Tabellen in einem zusammengesetzten Schlüssel (MenuCourse und CourseRecipeChoice) migriert wird.

Hier ist die Nachricht, die ich bekomme:

"Mindestens ein Validierungsfehler wurde während der Modellgenerierung festgestellt:

\ tSystem.Data.Entity.Edm.EdmAssociationConstraint:: Die Anzahl der Eigenschaften in der abhängigen und der Hauptrolle in einer Beziehungseinschränkung muss identisch sein. "

Folgendes habe ich in meiner EntityTypeConfiguration-Klasse versucht und es ist offensichtlich falsch ...

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

Was ist die richtige Syntax für die Navigationseigenschaften und die richtige Syntax für die flüssige API-Syntax für die CourseRecipeChoice-Verknüpfungstabelle?

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

Die Schlüssel lauten wie folgt:

SuggestedMenu (Id)MenuCourse (Id, SuggestedMenuId)CourseRecipeChoice (ID, SuggestedMenuId, MenuCourseId, RecipeId) // Dies ist tatsächlich der Punkt, an dem ich verwirrt bin, da SuggestedMenuId laut Modell ein PK in SuggestedMenu und ein PF in MenuCourse und CourseRecipeChoice ist (könnte dies nur ein schlechtes Design sein?).Rezept (RecipeId)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage