Ho un dotnet core 2.0
backend e l'applicazione angular2+
frontend.
Vorrei ottenere un elenco di partecipanti in cui il campo degli event
è uguale a "baseline" (proveniente dal menu a discesa nell'HTML) nella classe di pianificazione. Ho una relazione one-to-many
tra la classe Participant
e Schedule
.
Classe 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>();
}
}
E la mia classe 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; }
}
Ho un frontend angular 2+
da utilizzare per ottenere l'elenco dei partecipanti e dei loro programmi in cui l'evento è uguale a "base". La linea di base proviene dal frontend. Fondamentalmente, una voce di menu a discesa con codice fisso.
Sono in grado di ottenere tutti gli orari con tutti gli eventi come di seguito:
return await context.Participants
.Include(x => x.Schedules)
.ToListAsync();
Ma questo mi dà ancora persone con tutti gli orari. Ho bisogno di persone con tutto il programma in cui l' event
è uguale a "base".
Ecco cosa ho inventato finora:
return await context. Participants
.Include(x => x.Schedules.Where(v => v.Event == "baseline"))
.ToListAsync();
Ma questo non mi dà niente. Quale sarebbe il modo per realizzare questo? Non ricordo dove ho letto, ma qualcuno ha detto che il framework delle entità non supporta ancora questo. Non sono sicuro che sia vero .. Qualsiasi aiuto sarebbe apprezzato.
EDIT: Ecco lo stack di errori che ho:
InvalidOperationException: l'espressione lambda della proprietà Include 'x => {da Schedule v in x.Schedules dove [v] .Event.ToLower (). Uguali (__ ToLower_0) select [v]}' non è valido. L'espressione dovrebbe rappresentare un accesso alla proprietà: 't => t.MyProperty'. Per targetizzare le navigazioni dichiarate sui tipi derivati, specificare un parametro lambda tipizzato in modo esplicito del tipo di destinazione, ad es. '(Derivato d) => d.MyProperty'. Per ulteriori informazioni sull'inclusione dei dati correlati, vedere http://go.microsoft.com/fwlink/?LinkID=74639
Se hai bisogno di ottenere un elenco di partecipanti potresti andare dall'altra parte, iniziando dagli schedules
e ottenendo i riferimenti dei Participant
questo modo:
return context.Schedules.Where(s => s.Event == "baseline")
.Include(x => x.Participant).Select(x => x.Participant)