Pas eerst het model aan zodat collecties meervoudige namen hebben en objecten enkelvoudig, anders wordt je code erg verward:
building.cs
public List<Battery> Batteries { get; set; }
battery.cs
public long BuildingId { get; set; }
public Building Building { get; set; }
public List<Column> Columns { get; set; }
column.cs
public long BatteryId { get; set; }
public Battery Battery { get; set; }
public List<Elevator> Elevators { get; set; }
elevator.cs
public long ColumnId { get; set; }
public Column Columns { get; set; }
Laten we nu wat meer eigenschappen aan het model toevoegen, zodat het ons iets kan vertellen over interventies:
building.cs
public List<Battery> Batteries { get; set; }
[NotMapped]
public bool IsInIntervention => this.Status == "Intervention" || Batteries.Any(b => b.IsInIntervention);
battery.cs
public long BuildingId { get; set; }
public Building Building { get; set; }
public List<Column> Columns { get; set; }
[NotMapped]
public bool IsInIntervention => this.Status == "Intervention" || Columns.Any(c => c.IsInIntervention);
column.cs
public long BatteryId { get; set; }
public Battery Battery { get; set; }
public List<Elevator> Elevators { get; set; }
[NotMapped]
public bool IsInIntervention => this.Status == "Intervention" || Elevators.Any(e => e.IsInIntervention);
elevator.cs
public long ColumnId { get; set; }
public Column Column { get; set; }
[NotMapped]
public bool IsInIntervention => this.Status == "Intervention";
Nu kun je een gebouw gewoon vragen of het IsInIntervention is en het zal ja zeggen als het dat is of als iets dat het bezit is
Opmerking:als het model niet is geladen met entiteiten, moet u mogelijk een truc als deze gebruiken:EF Core linq en conditional include en theninclude probleem om ze voorwaardelijk te laden