我想用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中加載沒有外鍵約束的相關數據的全部内容,希望文章能夠幫你解決所遇到的問題。
如果覺得真正的電腦專家網站内容還不錯,歡迎将真正的電腦專家推薦給好友。
有話要說...