这是一个简单的问题,我想向各位专家确认一下!
我正在更改同一数据库中两个不同表中的一些值。可以只调用一次 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/