为什么我的代码不更新数据库?

时间:2011-10-30 16:16:07

标签: c# entity-framework

看看这两个代码

  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();
    
  3. 第一个代码不会更新数据库,而是第二个更新。为什么?如何更改我的代码以在第一种方法中执行更新操作? (我喜欢用第一种方法)

3 个答案:

答案 0 :(得分:5)

第一个仅将变量的值更改为不同的引用。它实际上不会以任何方式更新对象。数据上下文正在跟踪对象

答案 1 :(得分:3)

没有更新,因为您没有更改任何内容。在第一种情况下,您刚刚将_Slide更改为指向其他幻灯片。

答案 2 :(得分:0)

第一种方法的问题是设计上的,与您正在使用的框架无关。

致电: _Slide = _SlideObj;
你告诉_Slide指向_SlideObj,但是在内存中,前一个指向_Slider的指针的Title和Description属性保持不变。

因此,这是正常行为。