7

Tôi muốn triển khai cấu trúc dữ liệu phân cấp (ví dụ: Sản phẩm -> Sản phẩm 2 ----> Sản phẩm3, Sản phẩm 2 ----> Product4) bằng cách sử dụng khung pháp nhân 6 phương pháp tiếp cận đầu tiên. Có một số phương pháp có sẵn nhưng tôi nghĩ rằng cách tiếp cận bảng đóng cửa là một phương pháp có thể đáp ứng tất cả các yêu cầu của tôi. Có thể một số hướng dẫn tôi làm thế nào để thực hiện cách tiếp cận bảng đóng cửa trong khuôn khổ thực thể 6 hiệu quả hoặc bất kỳ lựa chọn thay thế khác?các bảng đóng với khung thực thể 6

+0

Âm thanh với tôi như bạn chỉ cần một lớp ProductHierarchy với thuộc tính Danh sách trẻ em. Bạn cảm thấy yêu cầu nào sẽ không được điền đầy đủ? –

Trả lời

2

những gì bạn cần là một nhiều-nhiều mối quan hệ với một thực thể tự: Ví dụ:

public class SelfReferencingEntity 
{ 
    public SelfReferencingEntity() 
    { 
     RelatedSelfReferencingEntitys = new HashSet<SelfReferencingEntity>(); 
     OtherRelatedSelfReferencingEntitys = new HashSet<SelfReferencingEntity>(); 
    } 

    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 

    public int SelfReferencingEntityId { get; set; } 

    public string Name { get; set; } 

    public decimal Cost { get; set; } 

    public virtual ICollection<SelfReferencingEntity> RelatedSelfReferencingEntitys { get; set; } 

    public virtual ICollection<SelfReferencingEntity> OtherRelatedSelfReferencingEntitys { get; set; } 
} 

và bạn cần phải ghi đè OnModelCreating phương pháp DbContext để hỗ trợ việc tự nhiều-nhiều tham khảo tương tự như sau:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 
    modelBuilder.Entity<SelfReferencingEntity>() 
    .HasMany(p => p.RelatedSelfReferencingEntitys) 
    .WithMany(p => p.OtherRelatedSelfReferencingEntitys) 
    .Map(m => 
    { 
     m.MapLeftKey("SelfReferencingEntityId"); 
     m.MapRightKey("RelatedSelfReferencingEntityId"); 
     m.ToTable("RelatedSelfReferencingEntity", ""); 
    }); 
} 

Có một ví dụ hoàn chỉnh rất hay được mô tả đầy đủ trong chương 6.3 của sách Entity Framework 6 Recipes giải quyết vấn đề này và mối quan hệ chuyển tiếp (mối quan hệ kéo dài nhiều cấp) và mã của nó có sẵn để tải xuống thông qua liên kết tôi đã đề cập.

Các vấn đề liên quan