0

我正在尝试从表中删除一整行数据。我正在使用的代码是:

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

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

它给我的错误是:

LINQ to Entities 无法识别方法“System.Object get_Item(System.String)”方法,并且该方法无法转换为存储表达式。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.NotSupportedException:LINQ to Entities 无法识别方法“System.Object get_Item(System.String)”方法,并且此方法无法转换为存储表达式。

它说了一些关于NotSupportException,所以我猜你不能这样做。

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

4

2 回答 2

4

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

我相信它告诉您它无法翻译这些操作。

于 2012-08-03T17:56:27.103 回答
2

LINQ to Entities 卡在嵌入式表达式上(LINQ to SQL 处理得更好)。您必须分解嵌入的表达式,以便 lambda 仅包含字符串常量。

string ooid = Session["OOID"];
string partNo = Request.QueryString["PartNumber"];

OModel.Cart pncart = database.Carts.FirstOrDefault(
                        pn => pn.OrderId == ooid && pn.PartNumber == partNo);
于 2012-08-03T17:58:57.170 回答