我想用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中加载没有外键约束的相关数据的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得真正的电脑专家网站内容还不错,欢迎将真正的电脑专家推荐给好友。
有话要说...