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

时间:2019-05-30 06:19:34

标签: c# entity-framework-core ef-core-2.1 entity-framework-core-2.1

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

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

[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);

1 个答案:

答案 0 :(得分:1)

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

型号

    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);