我有以下模型类:
Sensor
{
public int Id { get; set; }
public string Name { get; set; }
public bool Enbaled { get; set; }
public int SensorTypeId { get; set; }
pubic SensorType SensorType { get; set; }
}
SensorType
{
public int Id { get; set; }
public string Name { get; set; }
}
SensorDto
{
public int Id { get; set; }
public string Name { get; set; }
public string SensorTypeName { get; set; }
}
在我的控制器中,我试图直接从数据库中选择传感器模型。我们正在使用自己的活页夹类,因为我们的 Blazor 视图不能引用我们的数据库模型。
这是我的SensorDtoBinder
课:
public class SensorDtoBinder : IDtoBinder<SensorDto, Sensor>
{
public SensorDto Bind(Sensor dbItem)
{
return new SensorDto()
{
Id = dbItem.Id,
Name = dbItem.Name,
SensorTypeName = dbItem.SensorType.DisplayName
}
}
}
这是我的调用代码:
// get base query
var query = _db.Sensors.Where(x => x.Enabled);
// Package
var response = await query.Select(x => new SensorDtoBinder().Bind(x)).ToListAsync();
问题是当我运行它时,SensorTypeId
它有一个值,但是SensorType
它是空的。
但是,如果我添加包含它似乎可以工作,但是我的印象是,当明确选择(即不是延迟加载)时,您不需要包含)。这是我们使用每个操作方法的特定 Dto 项目的一个重要原因,因此我们可以从数据库中准确选择我们需要的内容。