2011-09-21 24 views
1

我在表單上有20個字段,如何在運行時更新用戶修改的字段以及如何檢查哪些字段已更改,以便我只能使用LINQ更新表中的值。我使用C#和Visual Studio 2010的Windows應用程序的工作使用LINQ只更新表中的修改列的方法

請參考代碼(目前我傳遞的所有值,我KNW這是不正確的方式)

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

您使用WPF或WindowsForms或ASP? –

+0

我正在使用WindowForms – zubi

+0

是你使用數據層?如果是,那麼你使用的是什麼技術(ADO.net,實體框架)? – Boomer

回答

-1

創建一些領域dublicates和比較值從本地dublicate的表單元素,如果它改變,而不是更新它。

+0

實體框架已經有更改跟蹤,不需要創建重複。 –

+0

但是在WindowsForms中他不能使用綁定,所以當他將所有數據從表單複製到EF類時,狀態屬性將被標記爲Modified狀態。或者我錯了? –

+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中記錄的所有修改。

+0

在摘要區域添加了我的代碼以供參考。 – zubi

+0

你是否收到任何錯誤信息? – Boomer

+0

不(這裏有cud是大括號問題,因爲我只是從函數中複製了摘錄)。它的更新正確,但我正在尋找只更新字段的方式,由用戶更改 – zubi