2011-03-16 72 views
1

我試圖創造出應該修改數據庫條目下列方式更新方法:如何通過更改演示文稿模型屬性來更新記錄?

 [Update] 
     public void InsertMachinePM(MachinePM machinePM) 
     { 
      machine _machine = new machine(); 
      _machine.machine_id = machinePM.MachineID; 
      int machineCategoryID = this.ObjectContext.machine_category.Where(so => so.title == machinePM.Category).FirstOrDefault().machine_category_id; 
      _machine.machine_category_id = machineCategoryID; 
      _machine.code = machinePM.Code; 
      _machine.description = machinePM.Description; 
      ObjectContext.machines.AddObject(_machine); 
      ChangeSet.Associate(machinePM, _machine, UpdateMachinePMKeys); 

     } 

     private void UpdateMachinePMKeys(MachinePM machinePM, machine _machine) 
     { 
      machinePM.MachineID = _machine.machine_id; 
     } 

代碼不會修改現有的記錄,但增加了一個新的與修改的屬性和新的ID。

我想最後兩行從第一個方法

ObjectContext.machines.AddObject(_machine); 
ChangeSet.Associate(machinePM, _machine, UpdateMachinePMKeys); 

改變與ObjectContext.SaveChanges();

但在這種情況下,該方法不修改現有記錄無論是。

因爲我還是Silverlight和RIA的新手,如果有人可以通過更改表示模型值來提示修改現有記錄的方法,我將不勝感激。

謝謝!

回答

1

我已經想通了。以下代碼更新現有記錄:

[Update] 
    public void InsertMachinePM(MachinePM machinePM) 
    { 
     machine _machine = ObjectContext.machines.Where(c => c.machine_id == machinePM.MachineID).FirstOrDefault(); 
     int machineCategoryID = this.ObjectContext.machine_category.Where(so => so.title == machinePM.Category).FirstOrDefault().machine_category_id; 
     _machine.machine_category_id = machineCategoryID; 
     _machine.code = machinePM.Code; 
     _machine.description = machinePM.Description; 
     ObjectContext.SaveChanges(); 
     ChangeSet.Associate(machinePM, _machine, UpdateMachinePMKeys); 

    } 

    private void UpdateMachinePMKeys(MachinePM machinePM, machine _machine) 
    { 
     machinePM.MachineID = _machine.machine_id; 
    } 
相關問題