1

Linq to Entities を使用して、データベース テーブルに追加したり、データベース テーブルから削除したりできます。ただし、次のコードはデータベースを更新しません。(例外などはありません。更新されないだけです。):

        // Change box qty
        var pnumber = Request.Form["PartNumber"];
        var oid = Session["OOID"];
        var uid = WebSecurity.CurrentUserId;
        var newqty = Request.Form["Quantity"];
        var c = (from item in database.Carts
                           where item.UserId == 
                           uid && item.PartNumber == 
                           pnumber && item.OrderId == (string)oid
                           select item.Boxes).FirstOrDefault();
        c = newqty.AsInt();
        database.SaveChanges();
        Response.Redirect("~/Protected/Account/Shopping/Cart");

私が間違っている可能性のあるアイデア、またはこれを解決する方法はありますか? Stack Overflow を検索し、Answers や Google で提供されているさまざまなサンプルを試しましたが、ほとんど同じで、役に立ちませんでした。

4

2 に答える 2

5

基本的に、EF を介して更新できるようにするには、プロパティ (列) だけでなく、エンティティ (レコード) 自体を取得する必要があります。

var newqty = Request.Form["Quantity"]; 
var c = (from item in database.Carts
           where item.UserId == 
           uid && item.PartNumber == 
           pnumber && item.OrderId == (string)oid
           select item).FirstOrDefault();
c.Boxes = newqty.AsInt();
database.SaveChanges();
于 2012-08-06T19:12:29.170 に答える
1

ラムダを使用した@Xanderの回答は次のとおりです

var newqty = Request.Form["Quantity"]; 
var c = database.Carts.Where(x => x.UserId == 
           uid && x.PartNumber == 
           pnumber && x.OrderId == (string)oid).FirstOrDefault();
c.Boxes = newqty.AsInt();
database.SaveChanges();

私はあなたが彼にエラーがあったと言ったことを知っています、これはあなたの教育目的のためです:)

于 2012-08-06T19:18:21.863 に答える