2011-12-08 71 views
0

我有一個名爲碼錶在我的LINQ to SQL datacontext的。我的模型文件夾中還有一個名爲Codes的類。我想要做的是將更新後的對象代碼保存到我的數據庫表代碼中。這可能嗎?MVC LINQ到SQL更新對象數據庫

在我的控制,我會編輯的對象傳遞給我的模型。我CodesRepository文件包含此:

public Codes EditCode(Codes CodeToEdit) 
     { 
      private EventsDataContext _db = new EventsDataContext(); 
      Codes C = new Codes(); 
      C = CodeToEdit; 

      _db.Codes.InsertOnSubmit(C); //error here, something about invalid arguments 
      //InsertOnSubmit is for adding a new object, but I don't know the syntax 
      // for editing an existing object. 

      _db.SubmitChanges(); 


     } 

這可能不是這樣所以有人點我在正確的方向的正確方法是什麼?我是否甚至需要一個名爲Codes的類,或者我需要以某種方式使用我的數據庫表?謝謝。


解決方案:我決定從改變的LINQ到SQL中的實體框架和它的效果要好得多。這樣,我不必定義我的Codes類,因爲它直接來自數據庫,我可以刪除Codes類文件。

回答

1

,當你得到對應於EN現有行中的數據庫中的對象回來,您應該使用DataContext.Attach。對於Linq-to-sql的樂觀併發處理來說,這需要你有原始的,未保存的對象可用,或者你在數據庫中有一個TimeStamp列。後者是首選,因爲它只需要處理一個額外的字段(可能通過Web表單中的隱藏字段)。

+0

用於回答Linq To SQL和非Entity Framework的+1!乾杯 – Craig

+0

我試過這個:_db.Codes.Attach(CodeToEdit);但我仍然有錯誤。我不認爲我可以將我的對象代碼的實例並將其保存到我的代碼數據庫表。 – MikeB55

+0

http://msdn.microsoft.com/en-us/library/bb546187.aspx上有更多信息,它描述瞭如何處理附着和樂觀併發。 –