无法通过构造函数将实体序列化为视图模型类型

本文关键字:序列化 视图 模型 类型 实体 构造函数 | 更新日期: 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();