2011-10-30 91 views
2

看看這兩個代碼爲什麼我的代碼不能更新數據庫?

  1. 第一:

    Slide _Slide = DataContext.Slides.SingleOrDefault(rec => rec.Id == _SlideObj.Id); 
    _Slide = _SlideObj;    
    DataContext.SaveChanges(); 
    
  2. 二:

    Slide _Slide = DataContext.Slides.SingleOrDefault(rec => rec.Id == _SlideObj.Id); 
    _Slide.Title = _SlideObj.Title; 
    _Slide.Description = _SlideObj.Description; 
    DataContext.SaveChanges(); 
    

第一個代碼不更新數據庫,但第二個更新。爲什麼?如何更改我的代碼以在第一種方法中執行更新操作? (我喜歡用第一種方法)

+0

刪除行'_Slide = _SlideObj;',因爲它正在覆蓋該值並使第一行完全沒有意義。也許你的意思是'_SlideObj = _Slide;'? –

+0

aa不,_SlideObj包含新值,我想將它們存儲在數據庫中 –

回答

3

沒有更新,因爲你沒有改變任何東西。在第一種情況下,您只是將_Slide更改爲指向不同的幻燈片。

+0

aaa ya you right.but what's solution ?! –

+0

@Ali幾乎:你的第二塊代碼**是**解決方案。 –

+0

有沒有其他解決方案可以訪問?我認爲如果我有很多領域的對象,這種方法不好,同意? –

5

第一隻改變的可變值設定爲不同的參考。它不以任何方式實際更新對象。數據上下文正在跟蹤對象

0

第一種方法的問題是設計問題,與您使用的框架無關。

通過調用: _Slide = _SlideObj;
您正在告訴_Slide改爲指向_SlideObj,但是在內存中,以前指向_Slider的指針的Title和Description屬性保持不變。

因此,這是正常的行爲。

相關問題