Code First Fluent API и свойства навигации в соединительной таблице
У меня есть четыре сущности, которые я хотел бы преобразовать в таблицы базы данных с помощью свободного кода API (я использую модель, найденную на databaseanswers.org), но я не уверен, как именно. Проблема, с которой я сталкиваюсь, заключается в том, что с помощью метода AdditionalMenuId переносится по двум разным таблицам в комбинированном ключе (MenuCourse и CourseRecipeChoice).
Вот сообщение, которое я получаю:
& quot; Одна или несколько ошибок проверки были обнаружены во время генерации модели:
\ tSystem.Data.Entity.Edm.EdmAssociationConstraint:: количество свойств в зависимых и основных ролях в ограничении отношений должно быть одинаковым. & quot;
Вот то, что я пробовал в своем классе EntityTypeConfiguration, и это, очевидно, неверно ...
<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>
Каков правильный синтаксис для свойств навигации и правильный синтаксис для свободного синтаксиса API для таблицы соединений CourseRecipeChoice?
<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>
Ключи следующие:
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)