2010-07-29 21 views
0

我有以下問題: 使用表單很容易在數據庫中插入oBject。合併數據上下文外的對象

  1. 在你從剛剛創建一個對象
  2. 它鏈接到田間地頭。
  3. 後回到控制器,
  4. 創建一個新的datacontext,做datacontext.InsertOnSubmit(對象)

public static void AddPage(string lang, Page page) 
       { 
        using (var db = new CardReaderDataContext()) 
        { 
         page.Lang = lang; 
         page.URL = UrlHelper.CreateValidSeoUrl(page.Name, "-"); 
         db.Pages.InsertOnSubmit(page); 
         db.SubmitChanges(); 
        } 
       } 

但是,如果你要更新一個對象,它是一個單調乏味的工作。 你做同樣的流量,

  1. 你得到的對象,
  2. 它鏈接到您的表單,
  3. 後它,但後來!!! 因爲它走你的datacontext之外,你必須從DataContext的重新加載對象,
  4. 傳輸的所有變量,並將其保存, 這是一個有點複雜的解釋讓我舉一個例子:

要更新您的形式修改的對象:

public static void Update(Page page) 
     { 
      using (var db = new CardReaderDataContext()) 
      { 
       var _page = db.Pages.Where(p => p.Guid == page.Guid).Single(); 
       _page.ModificationDate = DateTime.Now; 
       _page.Title = page.Title; 
       _page.Description = page.Description; 
       _page.Content = page.Content; 
       _page.Keywords = page.Keywords; 
       _page.Name = page.Name; 
       _page.WTLang = page.WTLang; 
       _page.WTSKU = page.WTSKU; 
       _page.WTTi = page.WTTi; 
       _page.WTUri = page.WTUri; 
       _page.URL = UrlHelper.CreateValidSeoUrl(page.Name, "-"); 
       // _page.Order = GetMaxOrderByMenuGuid(page.MenuGuid); 
       db.SubmitChanges(); 
      } 
     } 

我不知道這是否是清楚的,如果不作評論,我會編輯

+0

是你使用的Linq-to-SQL嗎?什麼是你的問題,順便說一句? – Yakimych 2010-07-29 11:01:43

+0

是linq-to-sql,我的問題是,是否有更簡單的方法來合併這些對象的更新,而不是每個值,將新值複製到從數據庫檢索到的對象。現在你要做的是:從數據庫檢索對象,修改值,檢索相同的對象,將每個值存儲到最後檢索的對象,更新 – Nealv 2010-07-29 11:28:57

+0

hmmm是我的問題不清楚,或者只是沒有答案 – Nealv 2010-07-29 13:49:32

回答

1

我想你正在尋找DataContext.Attach,但是你只能將它用於序列化/反序列化的linqtosql對象。

有答案的這個問題讀 - http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/384a1c03-3acf-43ef-9a25-b84f93025e63/

「這也是沒有甚至 試圖獲取舊版本通過 做一個好主意,你是在效果上說 關閉樂觀的併發性,所以除非你打算用 這是一個不好的 的方法。你需要做的是 往返都是原始狀態和對象的當前狀態。

+0

這不是一個真正的全球解決方案答案(我不認爲有答案),但是您提供的鏈接和那些是目前在那一個更有幫助,並讓我對這個問題有很好的洞察力 – Nealv 2010-07-30 08:48:05

相關問題