gpt4 book ai didi

asp.net-mvc - Entity Framework 中的 SaveChanges 会包装数据库事务中的所有更改

转载 作者:行者123 更新时间:2023-12-01 11:38:55 25 4
gpt4 key购买 nike

我的 asp.net mvc web 应用程序中有以下方法,我正在使用 Ado.net Entity Framework 来映射我当前的数据库表:-

public void changeDeviceSwitch(int fromID , int toID)
{
var currentdevices = tms.TMSSwitchPorts.Where(a => a.SwitchID == fromID);
foreach (var d in currentdevices)
{
tms.TMSSwitchPorts.Remove(d);
}
foreach (var d in currentdevices)
{
TMSSwitchPort tsp = new TMSSwitchPort()
{ SwitchID = toID,
TechnologyID = d.TechnologyID,
PortNumber = d.PortNumber };
tms.TMSSwitchPorts.Add(d);
}
tms.SaveChanges();
}

我上面的方法会在数据库中生成多个删除和添加操作。所以假设它将导致 5 个删除操作和 5 个插入操作,在这种情况下将调用 SaveChangies() 在我的例子中,将 10 个操作包装在一个数据库事务中?谢谢

最佳答案

这是正确的,SaveChanges 就像事务一样,这意味着在您显式调用它之前什么都不会发生(什么都不会发送到数据库),一旦您调用它,所有内容都会立即发送,如果一个查询/命令失败,则不会发生任何更改将被保留。

但是,如果您想要批量向 SQL 发送查询,但仍将它们视为单个事务,则您可以查看 Entity Framework 6 必须提供的功能 (MSDN Article)。基本上,您可以将多个 SaveChanges 包装在一个大事务中,如果发送到 SQL 的任何查询/命令失败,在任何批处理中,您都可以回滚所有内容。

关于asp.net-mvc - Entity Framework 中的 SaveChanges 会包装数据库事务中的所有更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23901263/

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