2012-03-06 60 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 
} 

這將保留當回傳發生用戶修正。