Linq更新查询

时间:2012-08-28 11:06:37

标签: c# asp.net linq

我想更新现有记录。我也调试了我的代码。 int id变量获取值,但我不知道为什么我的记录没有更新。

SQLDBDataClassesDataContext dContext = new SQLDBDataClassesDataContext();
protected void Page_Load(object sender, EventArgs e)
{
    //if (!IsPostBack)
    {
        if (!string.IsNullOrEmpty(Request.QueryString["fname"]))
        {
            FirstNameTextBox.Text = Request.QueryString["fname"];
        }
        if (!string.IsNullOrEmpty(Request.QueryString["lname"]))
        {
            LastNameTextBox.Text = Request.QueryString["lname"];
        }
        if (!string.IsNullOrEmpty(Request.QueryString["cellnum"]))
        {
            CellNumberTextBox.Text = Request.QueryString["cellnum"];
        }
    }
}

protected void UpdateButton_Click(object sender, EventArgs e)
{
    int id = Convert.ToInt32(Request.QueryString["id"]);
    var updatequery1 = dContext.PersonalDetailTables
        .Where(pd => pd.ID == id).SingleOrDefault();

    if (updatequery1 != null)
    {
        updatequery1.FirstName = FirstNameTextBox.Text;
        updatequery1.LastName = LastNameTextBox.Text;
        updatequery1.CellNumber = CellNumberTextBox.Text;
        dContext.SubmitChanges();
    }
}

4 个答案:

答案 0 :(得分:0)

if(updatequery1!= null)

是updatequery1 null吗?如果它现在,它只是跳过正确。设置断点并逐步完成。

或者,将.SingleOrDefautl更改为.Single。这样一来,如果找不到任何东西,你会得到一个例外,你会知道是什么。

答案 1 :(得分:0)

在致电dContext.InsertOnSubmit(fooentity)之前调用dContext.SubmitChanges();方法。

例如。

 var ctx = DB.fooDB;
        fooobj.fooName= bar.fooName;
        fooobj.fooID= bar.fooID;
        if (fooobj.fooID== 0)
            ctx.Locations.InsertOnSubmit(bar);
        ctx.SubmitChanges();

答案 2 :(得分:0)

我有我的解决方案.. 唯一的问题是if(!ispostback)问题。

答案 3 :(得分:-1)

context.InvProductStockMasters
       .Update(ps => ps.LocationID.Equals(invStockAdjustmentHeader.LocationID) 
                  && ps.ProductID.Equals(invStockAdjustmentDetail.ProductID), 
               ps => new InvProductStockMaster 
                          { Stock = ps.Stock - invStockAdjustmentDetail.OrderQty });