Ich habe vier Entitäten, die ich in Datenbanktabellen über Code ersten fließenden API übersetzen möchte (ich benutze ein Modell bei databaseanswers.org gefunden), 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.Code First Fluent API und Navigationseigenschaften in einer Join Tabelle
Hier ist die Botschaft, die ich bin immer:
„Ein oder mehrere Validierungsfehler wurden während der Modellerzeugung erfasst:
\ tSystem.Data.Entity.Edm.EdmAssociationConstraint: Die Zahl der Objekte in der Abhängige und Principal-Rollen in einer Beziehungsbedingung müssen identisch sein. "
Hier ist, was ich in meinem EntityTypeConfiguration Klasse versucht haben, und es ist offensichtlich falsch ...
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);
}
}
Was für die Navigationseigenschaften und die korrekte Syntax für fließend api Syntax für die CourseRecipeChoice die korrekte Syntax ist Join-Tabelle ?
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; }
}
Die Tasten sind wie folgt:
- SuggestedMenu (Id)
- MenuCourse (Id, SuggestedMenuId)
- CourseRecipeChoice (Id, SuggestedMenuId, MenuCourseId, RecipeId) // Das ist eigentlich, wo ich verwirrt werde, da SuggestedMenuId laut SugaredM ein PK ist enu und ein PF in MenuCourse und CourseRecipeChoice (könnte dies nur schlechtes Design sein?)
- Rezept (RecipeId)
Könnten Sie mir nur sagen, was sind die Schlüssel für jede Tabelle und was sind die Fremdschlüssel, vermute ich aber nicht sicher. Mit sollte es keine größeren Probleme geben, denke ich. – NSGaga
@NSGaga Ich habe Ihre Antwort noch zu lesen, aber ich habe die Frage aktualisiert, um die Schlüssel hinzuzufügen ... – Robert