Получение конституциональной ценности внутри Inlude в рамках сущности - PullRequest
0 голосов
/ 28 июня 2018

У меня есть dotnet core 2.0 бэкэнд и angular2+ приложение внешнего интерфейса.

Я хотел бы получить список участников, где поле event равно «базовой линии» (происходит из выпадающего меню в HTML) в классе расписаний. У меня one-to-many отношения между Participant и Schedule классом.

Participant.cs класс:

public class Participant
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Gender { get; set; }
    public DateTime DateOfBirth { get; set; }

    // RelationShips
    public ICollection<Schedule> Schedules { get; set; }

    public Participant()
    {
        Schedules = new Collection<Schedule>();
    }
}

И мой Schedule.cs класс:

public class Schedule
{
    public int Id { get; set; }
    public DateTime? AppointmentDate { get; set; }
    public string AppointmentTime { get; set; }
    public string Event { get; set; }
    public string Location { get; set; }

    // RelationShip
    public Participant Participant { get; set; }
    public int ParticipantId { get; set; }
}

У меня есть angular 2+ интерфейс, чтобы использовать его для получения списка участников и их расписаний, где событие равно «базовому уровню». Базовая линия исходит от внешнего интерфейса. По сути, это жестко выпадающий пункт меню.

Я могу получить все расписания со всеми событиями, как показано ниже:

return await context.Participants
            .Include(x => x.Schedules)
            .ToListAsync();

Но это снова дает мне людей со всеми расписаниями. Мне нужны люди со всем графиком, где event равно «базовому уровню».

Вот что я придумал:

return await context. Participants
            .Include(x => x.Schedules.Where(v => v.Event == "baseline"))
            .ToListAsync();

Но это мне ничего не дает. Каков был бы способ сделать это? Я не помню, где я читал, но кто-то сказал, что структура сущностей пока не поддерживает это. Я не уверен, что это правда .. Любая помощь будет оценена.

EDIT: Вот ошибка стека у меня:

InvalidOperationException: лямбда-выражение свойства Include 'x => {из расписания v в x.Schedules, где [v] .Event.ToLower (). Equals (__ ToLower_0) select [v]}' недопустимо. Выражение должно представлять доступ к свойству: 't => t.MyProperty'. Чтобы нацелить навигацию, объявленную на производные типы, укажите явно лямбда-параметр целевого типа, например '(Производный d) => d.MyProperty'. Для получения дополнительной информации о включении связанных данных см. http://go.microsoft.com/fwlink/?LinkID=74639

1 Ответ

0 голосов
/ 03 июля 2018

Если вам нужно получить список участников, вы можете пойти другим путем, начиная с schedules и получив Participant ссылки, подобные этой:

return context.Schedules.Where(s => s.Event == "baseline")
.Include(x => x.Participant).Select(x => x.Participant)
...