Asp.net-Mvc-3
LINQ to Entities 不支持指定的類型成員。僅支持初始化器、實體成員和實體導航屬性
在過去的兩天裡,我一直在想為什麼這不起作用,但對於我的其他表來說,它工作得非常好。我什至測試了包含許多欄位的其他模型。但是這個特殊的,即使只有 2 個欄位也不起作用。我知道我可能會遺漏一個明顯的部分,請幫忙。
這是我的模型
public class ReceivedItem { public int ReceivedItemID { get; set; } public int ItemID { get; set; } }視圖模型
public class ReceivedItemViewModel { public int ReceivedItemID { get; set; } public int ItemID { get; set; } }控制器
[GridAction] public ActionResult GetReceivedItems() { return View(new GridModel(GetReceivedItemsViewModels())); } private IQueryable<ReceivedItemViewModel> GetReceivedItemsViewModels() { return db.ReceivedItems .Select( c => new ReceivedItemViewModel { ItemID = c.ItemID }); }看法
@(Html.Telerik().Grid<ReceivedItem>() .Name("grdItems") .DataBinding(binding => binding.Ajax() .Select("GetReceivedItems", "Receiving")) .DataKeys(keys => keys.Add(o => o.ItemID)) .Columns(cols => { cols.Bound(c => c.ItemID); }) .Pageable() .Sortable() .Groupable() .Filterable())
我使用螢火蟲時遇到的錯誤:
The specified type member 'ReceivedItemID' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
據我所知,您無法在 Linq-to-SQL 查詢中初始化非實體對象。嘗試列舉結果,然後使用 Linq 創建您的視圖模型。
你有什麼(我猜這是拋出異常的地方):
// Original Code return db.ReceivedItems .Select( c => new ReceivedItemViewModel { ItemID = c.ItemID });列舉,然後使用 Linq 創建您的視圖模型:
// First statement var items = db.ReceivedItems.ToArray(); // Enumerates the collection. // Second statement return items.Select( c => new ReceivedItemViewModel { ItemID = c.ItemID });第一個 Linq 語句被翻譯成 SQL 語句,結果被返回並列舉為一個數組,最後,在第二個語句中,該數組用於創建視圖模型的集合。使用您的原始語句,Linq 語句的 SQL 翻譯必須考慮視圖模型(它無法做到)。
我希望這有幫助。(並且有道理):)