Tengo cuatro entidades que me gustaría traducir a las tablas de la base de datos a través del código de la primera API (estoy usando un modelo encontrado en databaseanswers.org), pero estoy no estoy seguro de cómo. El problema que tengo es que SuggestedMenuId se está migrando a través de dos tablas diferentes en una clave compuesta (MenuCourse y CourseRecipeChoice).Code First Fluent API y Navigation Properties en Join Table
Este es el mensaje que estoy recibiendo:
"Se detectaron uno o más errores de validación durante la generación del modelo:
\ tSystem.Data.Entity.Edm.EdmAssociationConstraint:: El número de propiedades en el Las funciones dependientes y principales en una restricción de relación deben ser idénticas ".
Esto es lo que he probado en mi clase EntityTypeConfiguration y es obviamente incorrecto ...
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);
}
}
¿Cuál es la sintaxis correcta para las propiedades de navegación y la sintaxis correcta para Sintaxis de la API fluidez de los CourseRecipeChoice tabla de unión ?
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; }
}
las claves son como sigue:
- SuggestedMenu (Id)
- MenuCourse (Id, SuggestedMenuId)
- CourseRecipeChoice (Id, SuggestedMenuId, MenuCourseId, RecipeId) // aquí es donde me confundo porque según el modelo, SuggestedMenuId es un PK en SuggestedM ENU y PF en MenuCourse y CourseRecipeChoice (este podría ser sólo un mal diseño?)
- Receta (RecipeId)
Podría decirme cuáles son las claves de cada tabla y cuáles son las claves externas, supongo, pero no estoy seguro. Con eso no deberían haber problemas mayores, creo. – NSGaga
@NSGaga Todavía tengo que leer su respuesta, pero actualicé la pregunta para agregar las claves ... – Robert