当前位置:首页 > 综合 > 正文

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

提问开始:

我想用Eager 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);
回答开始:得票数 1

这应该可以很好地工作,下面是一个典型的工作模型。

模型

    public class Category : ISelfRelated
    {
        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 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);
总结

以上是真正的电脑专家为你收集整理的在ef-core-2.1中加载没有外键约束的相关数据的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得真正的电脑专家网站内容还不错,欢迎将真正的电脑专家推荐给好友。

你可能想看:

有话要说...

取消
扫码支持 支付码