我正在试用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()
时,则不存在要提交的新数据。感谢任何帮助。。。。我想我已经看了这么长时间了,它需要一些新鲜的眼睛
您确定没有用原始数据(从数据库中重新选择)重新填充表单OnPostback以使linq更新真正起作用,但您总是将最新的数据库数据提交回数据库。
换句话说,你确定你只是在填写你的表格吗
if(!Page.IsPostback)
{
//populate the form
}
这将在发生回发时保留用户修正。
您是否尝试将SubmitChanges封装在try块中?也许它抛出了一个例外。以下是如何记录更新的,这与您正在做的非常相似:
http://msdn.microsoft.com/en-us/library/bb399339.aspx
此外,这是否适用于本地SQL Server数据库或SQL Express数据库?