我有四個實體,我想通過代碼第一流利的API(我使用在databaseanswers.org找到的模型)轉換成數據庫表,但我不確定如何。我遇到的問題是SuggestedMenuId正在通過Composite鍵(MenuCourse和CourseRecipeChoice)中的兩個不同表遷移。代碼在連接表中的第一流利的API和導航屬性
這裏是我得到的消息:
「模型生成過程中檢測到一個或多個驗證錯誤:
\ 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; }
}
鍵是如下:
- SuggestedMenu(Id)的
- MenuCourse(ID,SuggestedMenuId)
- CourseRecipeChoice(ID,SuggestedMenuId,MenuCourseId,RecipeId) //這實際上是我感到困惑的地方,因爲根據模型,SuggestedMenuId是SuggestedM中的PK ENU和MenuCourse和CourseRecipeChoice(可能這只是糟糕的設計?)一個PF
- 配方(RecipeId)
你能告訴我什麼是每個表的關鍵和什麼是外鍵,我猜但不知道。我認爲不應該有更大的問題。 – NSGaga 2012-04-14 15:25:57
@NSGaga我還沒有閱讀您的回覆,但我確實更新了問題以添加密鑰... – Robert 2012-04-14 18:43:26