コード ファーストの流暢な API (databaseanswers.org にあるモデルを使用しています) を介してデータベース テーブルに変換したい 4 つのエンティティがありますが、その方法については確信が持てません。私が抱えている問題は、SuggestedMenuId が Composite キーの 2 つの異なるテーブル (MenuCourse と CourseRecipeChoice) に移行されていることです。
これが私が受け取っているメッセージです:
「モデルの生成中に 1 つ以上の検証エラーが検出されました:
\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);
}
}
ナビゲーション プロパティの正しい構文と、CourseRecipeChoice 結合テーブルの流暢な API 構文の正しい構文は何ですか?
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; }
}
キーは次のとおりです。
- おすすめメニュー(ID)
- MenuCourse(Id, SuggestedMenuId)
- CourseRecipeChoice(Id, SuggestedMenuId, MenuCourseId, RecipeId) //モデルによると、SuggestedMenuId は SuggestedMenu の PK であり、MenuCourse と CourseRecipeChoice の PF であるため、実際にはここで混乱します (これは設計が悪いのでしょうか?)
- レシピ(レシピID)