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

Session["OOID"]の変数を宣言しRequest.QueryString["PartNumber"]、linq式内で使用する代わりに使用します。

それらの操作を翻訳することはできないと言っていると思います。

于 2012-08-03T17:56:27.103 に答える
2

LINQ to Entitiesは、埋め込み式に固執します(LINQ to SQLはこれをより適切に処理します)。ラムダに文字列定数のみが含まれるように、埋め込まれた式を分割する必要があります。

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 に答える