我正在尝试从我的域对象集中选择自定义类型,并注意到非常奇怪的EF行为。我完全可以弄明白,为什么会发生这种情况。所以我有:
public class Person
{
public IList<Device> Devices { get; set; }
}
public class Device
{
public DeviceConfiguration DeviceConfiguration { get; set; }
}
public class DeviceConfiguration
{
public IList<DeviceFeature> DeviceFeatures { get; set; }
}
public class DeviceFeature
{
public DeviceFeatureType DeviceFeatureType { get; set; }
}
我想从Persons
设置中选择自定义类型:
var personDTOs = persons.Select(x =>
new PersonDTO
{
Devices = x.Devices,
DeviceFeatures = x.Devices.SelectMany(y => y.DeviceConfiguration.DeviceFeatures )
});
问题是DeviceFeatures
填充了一些随机条目,即使Person
没有任何Devices
为什么会发生这种情况?
更新1:
我忘了提到的一件重要事情是personDTOs
之后的排序和分页(OrderBy, Skip, Take, ToList
)和这些“随机”的DeviceFeature仅包含在此之后。但如果我在这些行动之前选择有问题的条目,我可以看到一切都如预期的那样。延迟执行和/或选择自定义类型有问题,但我不明白究竟是什么以及什么是做这种选择的正确方法