Đầu tiên, hãy sửa mô hình để các bộ sưu tập có tên số nhiều và các đối tượng có tên đơn lẻ, nếu không mã của bạn sẽ trở nên rất lộn xộn:
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; }
Bây giờ, hãy thêm một số thuộc tính khác vào mô hình để nó có thể cho chúng tôi biết về các biện pháp can thiệp:
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";
Bây giờ bạn chỉ có thể hỏi một tòa nhà xem nó có phải là IsInIntervention hay không và nó sẽ trả lời là có nếu nó có hoặc nếu nó sở hữu bất cứ thứ gì
Lưu ý:nếu mô hình chưa được tải với các thực thể thì bạn có thể cần phải sử dụng một thủ thuật như sau: EF Core linq và sự cố bao gồm và theninclude có điều kiện để tải chúng có điều kiện