gpt4 book ai didi

c# - LINQ 中的 Context.SaveChanges()

转载 作者:行者123 更新时间:2023-11-30 15:38:42 25 4
gpt4 key购买 nike

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

我正在更改同一数据库中两个不同表中的一些值。可以只调用一次 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com