如何为每一行使用SaveChanges()

本文关键字:一行 SaveChanges | 更新日期: 2023-09-27 18:04:20

我的表格只有3行现在我想更新这些行现在我不知道如何保存这行

if (_Shifts != null)
{
    ContexManager contex = new ContexManager();
    Shift _sht;         
    _Shifts[0].MyStartTime = dtStart1.Value.TimeOfDay;
    _Shifts[0].MyEndTime = dtEnd1.Value.TimeOfDay;
    _Shifts[0].MyName = txtShift1.Text;
    contex.SaveChanges();
}

它现在不保存更改,如何为保存更改在数据库中,它为更新行[0]。

如何为每一行使用SaveChanges()

在这些值上运行循环,最后添加到集合中,并执行SaveChanges()

if (_Shifts != null)
{
ContexManager contex = new ContexManager();
Foreach( var shiftitem in _Shifts)
{
  shiftitem.MyStartTime = dtStart1.Value.TimeOfDay;
  shiftitem.MyEndTime = dtEnd1.Value.TimeOfDay;
  shiftitem.MyName = txtShift1.Text;
  context.Shifts.Add(shiftitem);
}
 contex.SaveChanges();
}

我知道这个问题已经有了答案,但为了完整起见,这里有一个更合乎逻辑的答案:

if (_Shifts != null)
{
    ContexManager contex = new ContexManager();
    Foreach(var shiftitem in _Shifts)
    {
        shiftitem.MyStartTime = dtStart1.Value.TimeOfDay;
        shiftitem.MyEndTime = dtEnd1.Value.TimeOfDay;
        shiftitem.MyName = txtShift1.Text;
        contex.Shifts.Attach(shiftitem);
        contex.Entry(shiftitem).State = EntityState.Modified;
    }
    contex.SaveChanges();
}

使用System.Data。EntityState,所以你需要一个using System.Data。它假设您只修改行而不添加任何行。如果你只想修改一个特定的行(例如第一个行),那么你的原始代码是部分正确的:

if (_Shifts != null)
{
    ContexManager contex = new ContexManager();
    Shift _sht = _Shifts[0];         
    _sht.MyStartTime = dtStart1.Value.TimeOfDay;
    _sht.MyEndTime = dtEnd1.Value.TimeOfDay;
    _sht.MyName = txtShift1.Text;
    contex.Shifts.Attach(_sht);
    contex.Entry(_sht).State = EntityState.Modified;
    contex.SaveChanges();
}