从表与实体框架/ ADO.NET删除

问题描述:

我想从表中删除整行数据。我正在使用的代码是:从表与实体框架/ 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,所以我猜你不能这样做。

那么,我将如何去从表中删除?我认为这是正确的方法。

我会声明Session["OOID"]Request.QueryString["PartNumber"]的变量,而不是在您的linq表达式中使用它们。

我相信它告诉你它不能翻译这些操作。

+1

谢谢!这工作。并感谢您的快速回复。 :-) – Arrow 2012-08-03 17:58:30

LINQ to Entities get被卡在嵌入式表达式上(LINQ to SQL处理这个更好)。您必须将嵌入式表达式分解出来,以便lambda只包含字符串常量。

+0

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