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

Cannot serialise entites to viewmodel type via constructor

我有问题 Only parameterless constructors and initializers are supported in LINQ to Entities.,我不确定如何解决这个问题,我可能会删除构造函数并手动初始化它们,但是由于代码已经存在,所以我想知道是否可以完成。

var entries = Db.Devices.Select(device => new DeviceDetailsModel(device)).ToList();
devices.AddRange(entries);

这里是 class

的构造函数
 public DeviceDetailsModel(Device device)
    {
        DeviceID = device.DeviceID;
        IPAddress = device.IPAddress;
        Alias = device.Alias;
        DeviceName = device.DeviceName;
    }

您使用的是 LINQ to Entities,而不仅仅是 LINQ to objects。这就是区别。 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();