我在表单上有20个字段,如何更新用户在运行时修改的字段以及如何检查哪些字段已更改,以便我只能使用LINQ更新表中的值。我正在使用C#和VS2010
处理Windows应用程序请参考代码(目前我正在传递所有值,我知道这不是正确的方法)
private void UpdateRecord(string groupBoxname)
{
using (SNTdbEntities1 context = new SNTdbEntities1())
{
{
Vendor_Account va = new Vendor_Account();
var Result = from grd in context.Vendor_Account
where grd.Bill_No == dd_billNo.Text
select grd;
if (Result.Count() > 0)
if ((dd_EditProjectName.Text!= "Select") && (dd_billNo.Text!="Select") && (dd_editVendorName.Text!="Select"))
{
foreach (var item in Result)
{
va.Account_ID = item.Account_ID;
}
va.Amount_After_Retention = Convert.ToDecimal(txt_AD_AfterRet.Text);
va.Balance = Convert.ToDecimal(txt_AD_Balance.Text);
va.Bill_Amount = Convert.ToDecimal(txt_AD_BillAmount.Text);
va.Bill_Date = Convert.ToDateTime(dt_AD_BillDate.Text);
va.Bill_No = dd_billNo.Text;
va.Comments = txt_AD_Comments.Text;
va.Paid_Till_Date = string.IsNullOrEmpty(txt_AD_Paid.Text)?0:Convert.ToDecimal(txt_AD_Paid.Text);
va.Project_Name = dd_EditProjectName.Text;
va.Retention_Perc = Convert.ToDecimal(txt_retPerc.Text);
va.Amount_After_Retention = Convert.ToDecimal(txt_AD_AfterRet.Text);
va.Vendor_Name = dd_editVendorName.Text;
va.Vendor_Code = txt_AD_Code.Text;
context.Vendor_Account.ApplyCurrentValues(va);
//context.Vendor_PersonalInfo.AddObject(vpi);
context.SaveChanges();
MessageBox.Show("Information Updated Sucessfully!");
lbl_Warning.Text = "";
entityDataSource1.Refresh();
}
else
{
MessageBox.Show("Vendor Name,Project Name and Bill No cannot be blank!!");
}
}
}
}
答案 0 :(得分:2)
实体框架将完成该任务。 由于您没有提供任何代码,我无法确切地说明答案,但请检查这些链接:
http://msdn.microsoft.com/en-us/library/aa697427(v=vs.80).aspx,部分:操纵数据和持久变更
http://www.codeproject.com/KB/database/sample_entity_framework.aspx
请注意, SaveChanges()函数将更新对EF中的记录所做的任何修改。
答案 1 :(得分:-1)
创建一些字段重复项,并将表单元素中的值与本地副本进行比较,如果它已更改而不是更新它。