Ho quattro entità che vorrei tradurre in tabelle di database tramite codice prima api fluente (sto usando un modello trovato su databaseanswers.org), ma io sono non certo su come. Il problema che sto avendo è che SuggestedMenuId viene migrato su due diverse tabelle in un tasto Composite (MenuCourse e CourseRecipeChoice).Codice First Fluent API e proprietà di navigazione in una tabella Join
Ecco il messaggio che sto ricevendo:
"sono stati rilevati uno o più errori di convalida durante la generazione del modello:
\ tSystem.Data.Entity.Edm.EdmAssociationConstraint:: Il numero di proprietà del I ruoli dipendenti e principali in un vincolo di relazione devono essere identici. "
Ecco quello che ho provato nella mia classe EntityTypeConfiguration ed è, ovviamente, non corretta ...
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);
}
}
Qual è la sintassi corretta per le proprietà di navigazione e la sintassi corretta per la sintassi api fluente per i CourseRecipeChoice unirsi a tavola ?
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; }
}
I tasti sono i seguenti:
- SuggestedMenu (Id)
- MenuCourse (Id, SuggestedMenuId)
- CourseRecipeChoice (Id, SuggestedMenuId, MenuCourseId, RecipeId) // questo è in realtà dove mi confondo perché secondo il modello, SuggestedMenuId è un PK in SuggestedM enu e un PF in MenuCourse e CourseRecipeChoice (questo potrebbe essere solo il cattivo design?)
- Ricetta (RecipeId)
Potresti dirmi quali sono le chiavi per ogni tavolo e quali sono le chiavi esterne, immagino ma non sono sicuro. Con non dovrebbero esserci problemi più grandi, penso. – NSGaga
@NSGaga Devo ancora leggere la tua risposta, ma ho aggiornato la domanda per aggiungere le chiavi ... – Robert