在 ef-core-2.1 中加载无外键约束的相关数据

Load related data without foreign key constraint in ef-core-2.1

我想使用预加载 O/RM 模式加载相关实体数据 Parent。但是我不能在 ParentId 上指定外键约束,因为它会创建一个不允许的循环。目前,我正在使用内部联接显式加载父数据。

这是我正在使用的领域模型。

[Table("Category")]
public class CategoryDM
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int CategoryId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    [Display(Name="Parent")]
    public int ParentId { get; set; }
    [NotMapped]
    public CategoryDM Parent { get; set; }
}

有没有办法像这样加载相关实体?或任何其他推荐的方法来实现这一目标。

var result = _context.Category.Include(e => e.Parent);

这应该可以正常工作,这是一个示例性工作模型。

型号

    public class Category : ISelfRelated<Category>
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string ThumbnailUrl { get; set; }
        public int? ParentId { get; set; }
        public Category Parent { get; set; }
        public IEnumerable<Category> Children { get; set; }
    }

车型配置

            category.HasOne(c => c.Parent)
                .WithMany(c => c.Children)
                .HasForeignKey(c => c.ParentId)
                .HasPrincipalKey(c => c.Id)
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired(false);