Tôi có bốn thực thể mà tôi muốn dịch thành các bảng cơ sở dữ liệu thông qua mã api thông thạo đầu tiên (tôi đang sử dụng mô hình được tìm thấy tại databaseanswers.org), nhưng tôi không chắc chắn như thế nào. Vấn đề tôi gặp phải là SuggestedMenuId đang được di chuyển qua hai bảng khác nhau trong một khóa Composite (MenuCourse và CourseRecipeChoice).Mã API lưu loát đầu tiên và các thuộc tính điều hướng trong một bảng tham gia
Dưới đây là thông điệp tôi nhận được:
"Một hoặc nhiều lỗi xác nhận đã được phát hiện trong thế hệ người mẫu:
\ tSystem.Data.Entity.Edm.EdmAssociationConstraint:: Số tài sản trong Vai trò phụ thuộc và vai trò chính trong ràng buộc mối quan hệ phải giống nhau. "
Đây là những gì tôi đã cố gắng trong lớp EntityTypeConfiguration của tôi và nó rõ ràng là không chính xác ...
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);
}
}
cú pháp chính xác cho các thuộc tính điều hướng và cú pháp chính xác cho cú pháp api thông thạo cho CourseRecipeChoice là gì tham gia bảng ?
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; }
}
Các phím như sau:
- SuggestedMenu (Id)
- MenuCourse (Id, SuggestedMenuId)
- CourseRecipeChoice (Id, SuggestedMenuId, MenuCourseId, RecipeId) // đây thực sự là nơi tôi bị lẫn lộn vì theo mô hình, SuggestedMenuId là một PK trong SuggestedM enu và PF trong MenuCourse và CourseRecipeChoice (có thể đây chỉ là thiết kế xấu?)
- Recipe (RecipeId)
Bạn có thể cho tôi biết chìa khóa cho mỗi bàn là gì và chìa khóa nước ngoài là gì, tôi đoán nhưng không chắc chắn. Với không nên có vấn đề lớn hơn tôi nghĩ. – NSGaga
@NSGaga Tôi chưa đọc câu trả lời của bạn, nhưng tôi đã cập nhật câu hỏi để thêm các phím ... – Robert