Ошибка в получении свойства навигации в отношении многих ко многим в ядре платформы сущностей - PullRequest
1 голос
/ 19 марта 2020

У меня есть две сущности, которые связаны во многих отношениях со следующими:

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, чтобы получить метку для класса, но он возвращает ноль , Также, когда я ставлю точку останова на метод и запускаю код, classfee.class возвращается как null

Я также пытался сделать следующее, чтобы посмотреть, могу ли я с нетерпением загрузить класс в запросе, но это не представляется возможным найти класс из classfee с помощью вызова ThenInclude следующим образом

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

, но в тот момент f.Class не существует, так как IntelliSence в Visual Studio не предлагает его и он подчеркивает это немедленно, и я пытаюсь добавить его.

Ниже показано, как я sh могу использовать класс под classFees, на мой взгляд

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

Но Class.Label подбрасывает исключение нулевой ссылки при запуске кода

Приложение строится на ASP. NET -Core 3.1 с Entity Framework 3.1

Буду признателен за любое руководство по решению этой проблемы Спасибо вы

1 Ответ

0 голосов
/ 19 марта 2020

Go вперед и попробуйте собрать его, используя ThenInclude, оно должно работать. Существует известная проблема с Intellisense и ThenInclude.

...