是否为每个请求使用事务都会减慢它们的速度

时间:2019-02-22 15:47:44

标签: sql-server entity-framework-core

我有一个奇怪的问题,在每个请求上使用事务处理是否会使我的请求变慢,这是值得注意的吗?

using (var transaction = _context.Database.BeginTransaction())
{
    this._context.SaveChanges();
    transaction.Commit();
}

1 个答案:

答案 0 :(得分:-1)

在Entity Framework中, SaveChanges()方法在内部创建一个事务,并将所有INSERT,UPDATE和DELETE操作包装在该事务下。 多次SaveChanges()调用,创建单独的事务,执行CRUD操作,然后提交每个事务

如果您在一次交易中有多个 SaveChanges ,您的代码看起来不错。

如果单个事务中有多个 SaveChanges ,则EF 6和EF Core允许我们使用以下方法通过多个SaveChanges()调用来创建或使用单个事务:

DbContext.Database.BeginTransaction():为基础数据库创建一个新事务,并允许我们使用多个SaveChanges方法调用来提交或回滚对数据库所做的更改。

DbContext.Database.UseTransaction():允许我们传递在上下文对象范围之外创建的现有事务对象。这将允许EF在外部事务对象中执行命令。或者,传入null以清除框架对该事务的了解。