У меня есть четыре объекта, которые я хотел бы перевести в таблицы базы данных с помощью кода first fluent api (Я использую модель, найденную на databaseanswers.org), но я Я не уверен, как это сделать. Проблема, с которой я столкнулся, заключается в том, что SuggestedMenuId мигрирует между двумя разными таблицами в составном ключе (MenuCourse и CourseRecipeChoice).
Вот сообщение, которое я получаю:
"Одна или несколько ошибок проверки были обнаружены во время создания модели:
\tSystem.Data.Entity.Edm.EdmAssociationConstraint::Количество свойств в зависимых и основных ролях в ограничении связи должно быть идентичным».
Вот что я пробовал в моем классе 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; }
}
Ключи следующие::