Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对每行使用SaveChanges()_C#_Entity Framework_Ef Code First - Fatal编程技术网

C# 如何对每行使用SaveChanges()

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

我有一个只有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;
        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,我会提供帮助