Ошибка NullReferenceException: Не выбираются специалисты

115
26 января 2020, 13:00

Прошу помочь с данной ошибкой: NullReferenceException: Object reference not set to an instance of an object.

HistoriesController.cs

public async Task<IActionResult> Index()
{
    var mymodel = new ViewModel();
    mymodel.Histories = await _context.Histories.Include(h => h.Doctor).Include(h => h.Patient).ToListAsync();
    mymodel.Specialists = await _context.Specialists.Include(s => s.Name).ToListAsync();
    return View(mymodel);
}

Index.cshtml

@foreach (Specialist specialist in Model.Specialists)
{
    <td>
        @Html.DisplayFor(modelItem => specialist.Name)
    </td>
}

ViewModel.cs

public class ViewModel
{
    public IEnumerable<Patient> Patients { get; set; }
    public IEnumerable<History> Histories { get; set; }
    public IEnumerable<Doctor> Doctors { get; set; }
    public IEnumerable<Specialist> Specialists { get; set; }
}
Answer 1

Смотрите какая штука.

Вот есть у вас допустим сущность специалист:

public class Specialists
{
    public int Id { get; set;}
    public string Name { get; set;}
}

вам нужно запомнить, что .Include не применяется ни к int, ни к string - только к другим композитным объектам (проще - таблицам).

Вот когда у вас есть история болезни (кого лечим, кто лечит):

public class History
{
    public int Id { get; set;}
    public virtual Doctor Who { get; set;}
    public virtual Patient Whom{ get; set;}
}

Вот только такие поля могут быть подключены - Doctor, Patient. Т.е. имена классов.

Делая выборку из специалиастов - все простые поля (имеющие типы int, double, string) подтягиваются автоматически. А вот обращения к другим таблицам (sql join) их нужно (если они нужны в выборке) объявлять явно.

READ ALSO
Найти значение в DataTable

Найти значение в DataTable

(c# winforms sv2010 net4) На форме есть Datagridview1 с разными типами колонок: Combobox, TextBox (определены заранее)После запуска формы в Datagridview1 по кнопке "Добавить...

111
Как написать скрипт обхода зданий в unity

Как написать скрипт обхода зданий в unity

Подскажите пожалуйста как лучше написать скрипт движения персонажа в 2д игре с видом сверху так чтобы персонаж обходил или останавливался...

133
Перебор многомерного jagged массива

Перебор многомерного jagged массива

Ребят, решил после js изучать С#, сразу возникли сложностиНеобходимо перебрать двухмерный массив

128
Отсутствие класса OpenFileDialog в библиотеке Microsoft.Win32

Отсутствие класса OpenFileDialog в библиотеке Microsoft.Win32

У меня в решении два проектаВ главном проекте я могу обратиться к классу следующим образом:Microsoft

130