Code First Fluent API и свойства навигации в соединительной таблице
У меня есть четыре сущности, которые я хотел бы преобразовать в таблицы базы данных с помощью свободного кода API (я использую модель, найденную на databaseanswers.org), но я не уверен, как именно. Проблема, с которой я сталкиваюсь, заключается в том, что с помощью метода AdditionalMenuId переносится по двум разным таблицам в комбинированном ключе (MenuCourse и CourseRecipeChoice).
Вот сообщение, которое я получаю:
& quot; Одна или несколько ошибок проверки были обнаружены во время генерации модели:
\ tSystem.Data.Entity.Edm.EdmAssociationConstraint:: количество свойств в зависимых и основных ролях в ограничении отношений должно быть одинаковым. & quot;
Вот то, что я пробовал в своем классе EntityTypeConfiguration, и это, очевидно, неверно ...
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);
}
}
Каков правильный синтаксис для свойств навигации и правильный синтаксис для свободного синтаксиса API для таблицы соединений CourseRecipeChoice?
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; }
}
Ключи следующие:
SuggestedMenu(Id) MenuCourse(Id, SuggestedMenuId) CourseRecipeChoice(Id, SuggestedMenuId, MenuCourseId, RecipeId) //this is actually where I get confused because according to the model, SuggestedMenuId is a PK in SuggestedMenu and a PF in MenuCourse and CourseRecipeChoice (could this just be bad design?) Recipe(RecipeId)