當前位置:首頁 > 綜合 > 正文

在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中加載沒有外鍵約束的相關數據的全部内容,希望文章能夠幫你解決所遇到的問題。

如果覺得真正的電腦專家網站内容還不錯,歡迎将真正的電腦專家推薦給好友。

你可能想看:

有話要說...

取消
掃碼支持 支付碼