2012-03-06 65 views
0

我正在尝试使用Azure,并遇到了一个我似乎无法找到答案的问题。Linq2SQL不更新SQL Azure上的记录

我正在运行linq查询来更新Azure数据库并对记录进行更改,但由于某些原因,这些更改未被记录或提交给数据库。我运行的代码如下:

DataClasses1DataContext update = new DataClasses1DataContext(); 

    Company extra = update.Companies.Single(p => p.ID == Convert.ToInt32(Request.QueryString["ID"])); 

    extra.companyName = txtCompanyName.Text; 
    extra.address1 = txtAddress1.Text; 
    extra.address2 = txtAddress2.Text; 
    extra.address3 = txtAddress3.Text; 
    extra.address4 = txtAddress4.Text; 
    extra.town = txtTown.Text; 
    extra.county = txtCounty.Text; 
    extra.postCode = txtPostCode.Text; 
    extra.billingEmail = txtBillingEmail.Text; 
    extra.facebook = txtFacebook.Text; 
    extra.fax = txtFaxNumber.Text; 
    extra.faxArea = txtFaxArea.Text; 
    extra.faxCountry = txtFaxCountry.Text; 
    extra.linkedIn = txtLinkedIn.Text; 
    extra.mainEmail = txtMainEmail.Text; 
    extra.mainPhone = txtMainLineNumber.Text; 
    extra.mainPhoneArea = txtMainLineArea.Text; 
    extra.mainPhoneCountry = txtMainLineCountry.Text; 

    if (drpMarketing.Text == "No") 
    { 
     extra.marketingYesNo = 0; 
    } 
    else 
    { 
     extra.marketingYesNo = 1; 
    } 

    extra.salesEmail = txtSalesEmail.Text; 
    extra.twitter = txtTwitter.Text; 
    extra.website = txtWebsite.Text; 

    update.SubmitChanges(); 

什么我通过设置断点注意到的是,如果我加载页面,然后改变一些数据,那么当该代码被称为新的数据没有反映(它在btnUpdate_Click事件中)

所以当使用submitChanges()时,新数据不存在提交。任何帮助表示赞赏....我想我已经看了这么久,它需要一些新鲜的眼睛哈哈。

回答

0

您是否试图将SubmitChanges包装在try块中?也许它正在抛出一个异常。下面是它是如何记录做更新,这是非常相似,你在做什么:

http://msdn.microsoft.com/en-us/library/bb399339.aspx

此外,没有针对本地SQL Server数据库或SQL Express数据库这项工作?

+0

只是再试一次,并将其包装在try块中,但没有例外。当我在VS中使用断点并将相关字段固定到调试器时,它显示出代码甚至没有捕获到这些更改,即我的测试记录中的Textbox for Fax编号为空,在更新时,行extra.fax = txtFaxNumber.Text显示为空白,即使我已将数据添加到字段以模拟更改。现有数据的字段也会出现同样的情况,即更改表单中的数据,单击更新并提交旧数据而不是更改。 – 2012-03-06 18:50:13

1

您确定您没有使用原始数据(从数据库中重新选择)重新填充表单OnPostback,以便实际上可以使用linq更新,但您始终将最新的数据库数据提交回数据库。

换句话说,你确定你是只填充表单

if(!Page.IsPostback) 
{ 
//populate the form 
} 

这将保留当回传发生用户修正。