首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ef-core-2.1中加载没有外键约束的相关数据

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

Stack Overflow用户
提问于 2019-05-30 14:19:34
回答 1查看 1.2K关注 0票数 1

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

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

代码语言:javascript
复制
[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; }
}

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

代码语言:javascript
复制
var result = _context.Category.Include(e => e.Parent);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 14:31:48

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

模型

代码语言:javascript
复制
    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; }
    }

模型配置

代码语言:javascript
复制
            category.HasOne(c => c.Parent)
                .WithMany(c => c.Children)
                .HasForeignKey(c => c.ParentId)
                .HasPrincipalKey(c => c.Id)
                .OnDelete(DeleteBehavior.Restrict)
                .IsRequired(false);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56372689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档