2012-08-03 163 views
0

我想從表中刪除整行數據。我正在使用的代碼是:從表與實體框架/ ADO.NET刪除

OModel.Cart pncart = database.Carts.FirstOrDefault(
         pn => pn.OrderId == Session["OOID"] && 
         pn.PartNumber == Request.QueryString["PartNumber"]); 

database.Carts.DeleteObject(pncart); 
database.SaveChanges(); 

,它給我的錯誤是:

LINQ到實體無法識別方法 'System.Object的 get_Item(System.String)'方法,並且此方法不能將 轉換爲商店表達式。說明:執行當前Web請求期間發生未處理的異常 。請 查看堆棧跟蹤以獲取有關該錯誤的更多信息,以及源代碼中的 。

異常詳細信息:System.NotSupportedException:LINQ實體 不能識別方法「System.Object的get_Item(System.String)」 方法,並且這種方法不能被翻譯成表達商店。

它說了一些關於NotSupportException,所以我猜你不能這樣做。

那麼,我將如何去從表中刪除?我認爲這是正確的方法。

回答

4

我會聲明Session["OOID"]Request.QueryString["PartNumber"]的變量,而不是在您的linq表達式中使用它們。

我相信它告訴你它不能翻譯這些操作。

+1

謝謝!這工作。並感謝您的快速回復。 :-) – Arrow 2012-08-03 17:58:30

2

LINQ to Entities get被卡在嵌入式表達式上(LINQ to SQL處理這個更好)。您必須將嵌入式表達式分解出來,以便lambda只包含字符串常量。

+0

謝謝!非常感激。 :-) – Arrow 2012-08-03 17:59:56