我想用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);发布于 2019-05-30 14:31:48
这应该可以很好地工作,下面是一个典型的工作模型。
模型
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);https://stackoverflow.com/questions/56372689
复制相似问题