2016-07-28 77 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();