如何为每一行使用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()
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();
}