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 使用 Lambda 的回答

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 回答