Code First Fluent API и свойства навигации в соединяемой таблице

У меня есть четыре объекта, которые я хотел бы перевести в таблицы базы данных с помощью кода 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; }
}

Ключи следующие::

  • SuggestedMenu(Id)
  • MenuCourse(Id, SuggestedMenuId)
  • CourseRecipeChoice(Id, SuggestedMenuId, MenuCourseId, RecipeId)//это то место, где я запутаться, потому что, согласно модели, SuggestedMenuId — это PK в SuggestedMenu и PF в MenuCourse и CourseRecipeChoice (, может быть, это просто плохой дизайн?)
  • Recipe(RecipeId)
6
задан Robert 14 April 2012 в 18:42
поделиться