无法通过构造函数将entites序列化为viewmodel类型

时间:2016-07-28 08:27:57

标签: c# entity-framework linq linq-to-entities asp.net-web-api2

我遇到了问题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;
    }

1 个答案:

答案 0 :(得分:2)

您使用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();