在Entity Framework中如何判断Sensor是否无关联SensorLog数据?
解决方案
方法一:用Any()直接判断日志是否存在
FirstOrDefault返回null就代表无匹配数据,但用Any()更高效,直接返回布尔值:
// 返回true时,表示该Sensor没有对应的SensorLog数据 bool noSensorLogExists = !Context.SensorLogs.Any(a => a.SensorId == sensor.SensorId);
如果noSensorLogExists为true,即可执行添加日志的逻辑。
方法二:关联Sensor表验证(若Sensor已存入数据库)
如果你的Sensor实体已经在数据库中,可通过关联查询确认:
bool noSensorLogExists = !Context.Sensors .Where(s => s.Id == sensor.SensorId) .Any(s => s.SensorLogs.Any());
注意点
- 避免用
Count() == 0,Count()会遍历所有匹配记录,Any()找到第一条就终止,性能更优。 - 确认传入的
sensor.SensorId值正确,排除参数错误导致的查询异常。
内容的提问来源于stack exchange,提问作者Charlie Østergaard
相关产品推荐
相关产品推荐

