簡體   English   中英

在實體框架核心的多對多關系中獲取導航屬性時出錯

[英]Error in getting navigation property in a many to many relationship in entity framework core

我有兩個以多對多關系連接的實體,如下所示

public class Fee
{
    public int Id { get; set; }
    [Required]
    public string Label { get; set; }
    public string Description { get; set; }

   ----Ignored for brevity----

    public virtual ICollection<ClassFee> ClassFees { get; set; }

}

public class StudentClass
{

    public int Id { get; set; }
    public string Label { get; set; }
    ---Ignored for brevity---
    public virtual ICollection<ClassFee> ClassFees { get; set; }

}

 public class ClassFee
{
    public int Id { get; set; }
    [Display(Name ="Fee")]
    public int FeeId { get; set; }
    [Display(Name ="Class")]
    public int ClassId { get; set; }

    ---ignored for brevity---

    [ForeignKey("FeeId")]
    public Fee Fee { get; set; }

    [ForeignKey("ClassId")]
    public StudentClass Class { get; set; }
}

以下是我的 FeesController 類,我打算在其中獲取給定費用的詳細信息以及費用適用的類列表

public async Task<IActionResult> Details(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var fee = await _context.Fees
            .Include(cf => cf.ClassFees)
            .FirstOrDefaultAsync(m => m.Id == id);
        if (fee == null)
        {
            return NotFound();
        }

        return View(fee);
    }

我期望通過這個,我應該能夠通過調用classFeeEntityInstance.class.label來獲取視圖中的費用類來獲取類的標簽,但它返回 null。 此外,當我在方法上放置斷點並運行代碼時,classfee.class 返回為 null

我還嘗試執行以下操作,以查看是否可以在查詢中急切地加載該類,但似乎無法使用 ThenInclude caluse 從 classfee 中找到該類,如下所示

.Include(cf => cf.ClassFees).ThenInclude(f=>f.Class)

但是 f.Class 那時不存在,因為 Visual Studio 中的智能不建議它並且它立即強調它我嘗試添加它。

以下是我希望如何在我看來使用 classFees 下的類

@foreach (ClassFee classFee in Model.ClassFees)
{
   @classFee.Class.Label
}

但是當代碼運行時 Class.Label 會拋出一個空引用異常

該應用程序基於 ASP.NET-Core 3.1 和 Entity Framework 3.1

我將不勝感激任何解決此問題的指南 謝謝

繼續嘗試使用ThenInclude構建它,它應該可以工作。 Intellisense 和ThenInclude存在一個已知問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM