如何 'Include()' 深对象 EF Core
How to 'Include()' deep objects EF Core
我有一个自动化设备的数据结构。
它有多个输出,这些输出被组织成一个布局。
public class AutomationLayout
{
public Pin D0 { get; set; }
public Pin D1 { get; set; }
public Pin D2 { get; set; }
public Pin D3 { get; set; }
public Pin D4 { get; set; }
public Pin D5 { get; set; }
public Pin D6 { get; set; }
public Pin D7 { get; set; }
public Pin D8 { get; set; }
public Pin D9 { get; set; }
}
每个输出都有多个依赖项。
public class Pin
{
public string Name { get; set; }
public string DigitalSensor { get; set; }
public Schedule Schedule { get; set; }
public ClimateControl ClimateControl { get; set; }
public TempRange TempRange { get; set; }
public VoltRange VoltRange { get; set; }
}
而那些类也是属性满满的
Database diagram
我在 EF Core 中使用了数据库优先方法。
我正在将创建的模型映射到 DTO 并在我的控制器中使用它们。
public static class DeviceDtoMapper
{
public static DeviceGetDto MapDeviceToGetDto(Device device)
{
return new DeviceGetDto()
{
Id = device.Id,
Name = device.Name,
CreatedAt = device.CreatedAt
};
}
public static Device MapPostDtoToDevice(DevicePostDto deviceDto)
{
return new Device()
{
Name = deviceDto.Name,
CreatedAt = DateTimeOffset.Now.ToString()
};
}
public static Device MapPutDtoToDevice(DevicePutDto deviceDto)
{
return new Device()
{
Name = deviceDto.Name
};
}
}
我正在尝试编写一个控制器来获取完整的自动化布局。
问题是它需要超过 1000 行 Include() 和 ThenInclude() 行,这似乎不是很有效。
如果可能,我会避免包含所有导航属性。
如何处理这个数据结构?
提前致谢。
解决方案是根据@JeremyLakeman 的建议更改数据库设计。
对于索引对象集合,我只需要使用正确的 'Includes' 和 'ThenIncludes' 系列映射结构一次。
我有一个自动化设备的数据结构。 它有多个输出,这些输出被组织成一个布局。
public class AutomationLayout
{
public Pin D0 { get; set; }
public Pin D1 { get; set; }
public Pin D2 { get; set; }
public Pin D3 { get; set; }
public Pin D4 { get; set; }
public Pin D5 { get; set; }
public Pin D6 { get; set; }
public Pin D7 { get; set; }
public Pin D8 { get; set; }
public Pin D9 { get; set; }
}
每个输出都有多个依赖项。
public class Pin
{
public string Name { get; set; }
public string DigitalSensor { get; set; }
public Schedule Schedule { get; set; }
public ClimateControl ClimateControl { get; set; }
public TempRange TempRange { get; set; }
public VoltRange VoltRange { get; set; }
}
而那些类也是属性满满的
Database diagram
我在 EF Core 中使用了数据库优先方法。
我正在将创建的模型映射到 DTO 并在我的控制器中使用它们。
public static class DeviceDtoMapper
{
public static DeviceGetDto MapDeviceToGetDto(Device device)
{
return new DeviceGetDto()
{
Id = device.Id,
Name = device.Name,
CreatedAt = device.CreatedAt
};
}
public static Device MapPostDtoToDevice(DevicePostDto deviceDto)
{
return new Device()
{
Name = deviceDto.Name,
CreatedAt = DateTimeOffset.Now.ToString()
};
}
public static Device MapPutDtoToDevice(DevicePutDto deviceDto)
{
return new Device()
{
Name = deviceDto.Name
};
}
}
我正在尝试编写一个控制器来获取完整的自动化布局。
问题是它需要超过 1000 行 Include() 和 ThenInclude() 行,这似乎不是很有效。
如果可能,我会避免包含所有导航属性。
如何处理这个数据结构?
提前致谢。
解决方案是根据@JeremyLakeman 的建议更改数据库设计。
对于索引对象集合,我只需要使用正确的 'Includes' 和 'ThenIncludes' 系列映射结构一次。