C# 如何对每行使用SaveChanges()
我有一个只有3行的表,现在我想更新这些行,现在我不知道如何保存这一行C# 如何对每行使用SaveChanges(),c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我有一个只有3行的表,现在我想更新这些行,现在我不知道如何保存这一行 if (_Shifts != null) { ContexManager contex = new ContexManager(); Shift _sht; _Shifts[0].MyStartTime = dtStart1.Value.TimeOfDay; _Shifts[0].MyEndTime = dtEnd1.Value.TimeOfDay; _Shifts[0
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;
contex.Shifts.Attach(shiftitem);
contex.Entry(shiftitem).State = EntityState.Modified;
}
contex.SaveChanges();
}
这将使用System.Data.EntityState,因此您需要使用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();
}
我知道这个问题已经得到了回答,但为了完整起见,这里有一个更符合逻辑的答案:
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,因此您需要使用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();
}
然后您需要删除行并执行savechanges()我不想删除行,因为我在其他应用程序中将此行用作外键tables@sadeq这并不重要,因为即使删除和插入,模式也将保持不变,或者,您可以将状态修改为“已修改”,并执行savechanges context.Shifts.state=System.Data.Entity.EntityState.modified;我使用remove来删除它们,但它没有更新和上下文。Shift没有状态给我teamviewer我将提供帮助然后你需要删除行并执行savechanges()我不想删除行,因为我在其他应用程序中将此行用作外键tables@sadeq这并不重要,因为即使删除和插入,模式也将保持不变,或者,您可以将状态修改为“已修改”,并执行savechanges context.Shifts.state=System.Data.Entity.EntityState.modified;我使用remove来删除它们,但它没有更新和上下文。Shift没有状态给我teamviewer,我会提供帮助