2016-07-28 71 views
1

我有一个问题Only parameterless constructors and initializers are supported in LINQ to Entities.到视图模型类型,我不知道如何解决这个问题,我可以去除可能的构造和初始化这些手工然而,由于代码已经在那儿了,然后我在想,如果有什么可以完成。不能连载的entites通过构造

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

,这里是构造函数中您可以使用LINQ到实体不仅仅是LINQ的对象类

public DeviceDetailsModel(Device device) 
    { 
     DeviceID = device.DeviceID; 
     IPAddress = device.IPAddress; 
     Alias = device.Alias; 
     DeviceName = device.DeviceName; 
    } 
+0

的可能的复制[只参数构造函数初始化和LINQ中支持到实体消息](http://stackoverflow.com/questions/17367649/only-parameterless -constructors-和初始化,被支持的功能于LINQ到entiti) –

+1

基本上,选择作为查询到你的数据库的一部分来执行,和LINQ不知道如何将您的构造函数转化为(大概)SQL 。如果你不关心从数据库返回的列数,第一兑现你的结果,那么就变换。 –

回答

2

。这是不同的。 LINQ到实体会将您的Linq查询到SQL查询,它不知道如何翻译你的构造。使用初始化代替 - LINQ到实体就可以搞定:

var entries = Db.Devices.Select(x => new DeviceDetailsModel 
{ 
    DeviceID = x.DeviceID; 
    IPAddress = x.IPAddress; 
    Alias = x.Alias; 
    DeviceName = x.DeviceName; 
}).ToList();