我正在使用 .NET 7,并且我有以下模型类:
public class MachineSchedule : BaseModel
{
public int MachineScheduleId { get; set; }
public EWeekDay WeekDay { get; set; }
public TimeSpan InitialProductionTime { get; set; }
public TimeSpan FinalProductionTime { get; set; }
public DateTime? UpdatedAt { get; set; }
#region Relationships
public virtual ICollection<MachineOperation>? MachineOperations { get; set; }
public virtual ICollection<Shift>? Shifts { get; set; }
public virtual ICollection<ScheduledStop>? ScheduledStops { get; set; }
#endregion
}
我想进行查询过滤,例如“Shift”模型类,所以我有:
machineScheduleDto = _context
.AsNoTracking()
.Include(m => m.Shifts.Where(s => s.Type == shiftType));
但是由于我的关系是可选的,我收到以下警告:
参数可能为空引用参数。
我该如何解决这个问题?我知道如果我在类的声明中添加“必需”,所有问题都可以解决,但我的关系确实是可选的,所以添加这对我来说似乎是错误的。
如果您使用 EF Core 5 或更高版本,则可以使用筛选的 Include 方法,该方法允许您在包含的导航属性上指定Where 子句。
您可以使用 null-forgiving 运算符:
machineScheduleDto = _context
.AsNoTracking()
.Include(m => m.Shifts!.Where(s => s.Type == shiftType));