无法通过构造函数将实体序列化为视图模型类型
本文关键字:序列化 视图 模型 类型 实体 构造函数 | 更新日期: 2023-09-27 17:59:05
我有一个问题Only parameterless constructors and initializers are supported in LINQ to Entities.
,不知道如何解决这个问题,我可能会删除构造函数并手动初始化它们,但由于代码已经存在,我想知道是否可以做些什么。
var entries = Db.Devices.Select(device => new DeviceDetailsModel(device)).ToList();
devices.AddRange(entries);
这是类的构造函数
public DeviceDetailsModel(Device device)
{
DeviceID = device.DeviceID;
IPAddress = device.IPAddress;
Alias = device.Alias;
DeviceName = device.DeviceName;
}
您对实体使用Linq,而不仅仅是对对象使用Linq。这就是区别。Linq to Entities将您的Linq查询转换为SQL查询,但它不知道如何转换您的构造函数。使用初始值设定项-Linq to Entity可以处理:
var entries = Db.Devices.Select(x => new DeviceDetailsModel
{
DeviceID = x.DeviceID;
IPAddress = x.IPAddress;
Alias = x.Alias;
DeviceName = x.DeviceName;
}).ToList();