c# - LINQ 中的 Context.SaveChanges()

标签 c# .net linq

这是一个简单的问题,我想向各位专家确认一下!

我正在更改同一数据库中两个不同表中的一些值。可以只调用一次 SaveChanges 来更新所有吗?似乎可行,但我想知道它是否可以,还是需要在每次更新后调用 context.SaveChanges?

bool success = false;
TestSuiteDB context = new TestSuiteDB();

var workstyle1 = context.WorkStyle.Where(d => d.WorkStyleId==21 && d.MemberId==1).ToList();
foreach (var ws1 in workstyle1)
{
    ws1.ModuleId = flid1;
}

var workstyle2 = context.WorkStyle.Where(d => d.WorkStyleId == 22 && d.MemberId==1).ToList();
foreach (var ws2 in workstyle2)
{
    ws2.ModuleId = flid2;
}

var workstylemodules1 = context.WorkStyleModules.Where(d => d.WorkStyleModuleId == 2 && d.MemberId == 1).ToList();
foreach (var ws1 in workstylemodules1)
{
    ws1.ModuleId = flid1;
}

var workstylemodules2 = context.WorkStyleModules.Where(d => d.WorkStyleModuleId == 3 && d.MemberId == 1).ToList();
foreach (var ws2 in workstylemodules2)
{
    ws2.ModuleId = flid2;
}

if (context.SaveChanges() > 0)
{
    success = true;
}

最佳答案

您可以在所有更新之后调用 Context.SaveChanges(); 一次,它将保存之前所做的所有更改。

如果您希望更改/插入一个新对象,并希望根据数据库的实际值修改下一个对象,您可以调用 Context.SaveChanges() 以便更新数据库.

在上下文中跟踪对实体的任何更改/插入,一旦调用 SaveChanges,它也会将更改放入数据库中。

还要记住这一点: 来自 MSDN :

SaveChanges operates within a transaction. SaveChanges will roll back that transaction and throw an exception if any of the dirty ObjectStateEntry objects cannot be persisted.

关于c# - LINQ 中的 Context.SaveChanges(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11136854/

相关文章:

LINQ - Where(Predicate).FirstOrDefault() 是否与 FirstOrDefault(Predicate) 相同

linq - 如何在不使用 LINQ 循环的情况下删除 Entity Framework 中的多条记录?

c# - 是否可以将单个 linq 查询结果分配给多个变量?

c# - 构建一个 c# 桌面应用程序,从头开始,请提示

c# - DisplayFor 辅助方法呈现实体的 ID,但不会将其沿着 POST 表单集合传递

.net - 是否有标准的 DateTime 字符串表示形式作为 Windows 文件名有效并且可以使用 DateTime.Parse 进行解析?

c# - 如何使用 C# 创建带有粗体标题行的 csv 文件

c# - 在 XAML 中为用户控件设置属性

c# 访问所有可用的 css 列表或属性集合

c# - 如何使用空格执行 linq 搜索