使用Linq更新数据库到实体

Arr*_*row 1 .net c# linq ado.net entity-framework

我可以使用Linq to Entities添加和删除Database表.但是,以下代码不会更新数据库.(没有例外或任何事情 - 它只是不更新​​.):

        // 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");
Run Code Online (Sandbox Code Playgroud)

我有什么想法可能做错了,或者如何解决这个问题?我已经搜索了Stack Overflow并尝试了答案中提供的各种示例,以及谷歌,但它们几乎都是一样的,并没有帮助.

xan*_*ded 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();
Run Code Online (Sandbox Code Playgroud)