0

我有以下模型类:

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 项目的一个重要原因,因此我们可以从数据库中准确选择我们需要的内容。

4

0 回答 0