Tôi gặp vấn đề với Mã khung thực thể Phương pháp tiếp cận đầu tiên trong việc phát triển hệ thống phân cấp cây.Mã EF Đầu tiên. Bộ sưu tập trẻ em là không cho phụ huynh
Tôi cần lưu trữ một số cây trong cơ sở dữ liệu. Bảng của tôi có ba trường Id, Name và Parent_Id. Tôi tạo ra lớp sau trong dung dịch của tôi:
public class TreeNode
{
public TreeNode()
{
Children = new List<TreeNode>();
}
public int Id { get; set; }
[Required]
public String Name { get; set; }
public virtual IList<TreeNode> Children { get; set; }
public virtual TreeNode Parent { get; set; }
}
Tôi đã thêm các cấu hình sau đây cho TreeNode lớp
modelBuilder.Entity<TreeNode>().HasOptional(c => c.Parent)
.WithMany(c => c.Children)
.Map(m => m.MapKey("Parent_Id"));
Vấn đề là trẻ em luôn là null khi được trả về bởi EF.
Nhưng nếu truy xuất một số nút con, hãy nhận nút Phụ huynh thông qua thuộc tính Gốc, sau đó Thuộc tính trẻ em được điền chính xác.
Tôi không chắc có gì sai ở đây. Tìm kiếm lời khuyên của bạn.
Cập nhật: bổ sung sửa đổi ảo để tính chuyển hướng không giúp
Cảm ơn. Ngay cả với các thuộc tính ảo Trẻ em không được trả lại. – lostaman
@lostaman đảm bảo tải lười được bật cho ngữ cảnh 'context.Configuration.LazyLoadingEnabled = true;' –
Cảm ơn @lazyberezovsky. Tôi có tùy chọn này được đặt thành false. Tôi đã thay đổi nó thành true và bây giờ tôi nhận được thông báo lỗi "Đã có một DataReader mở được liên kết với Lệnh này phải được đóng trước" khi cố gắng truy cập bộ sưu tập Trẻ em. – lostaman