【发布时间】:2017-05-19 17:51:11
【问题描述】:
如何在实体框架中异步提交事务?
using (var transaction = this.db.Database.BeginTransaction())
{
this.db.DoSomething();
await this.db.SaveChangesAsync().ConfigureAwait(false);
// note .Commit isn't async but it involves network i/o
transaction.Commit();
}
我想让 .Commit 异步,但我在 DbContextTransaction 中没有看到合适的 API
【问题讨论】:
-
它看起来在内部它是异步实现的(或至少是事件驱动的) this.InternalDispatcher.Dispatch
(transaction, (Action ) ((t, c) => t.Commit()), new DbTransactionInterceptionContext(interceptionContext).WithConnection(transaction.Connection), (Action ) ((i, t, c) => i.Committing(t, c) ), (Action ) ((i, t, c) => i.Committed(t, c))); -
DbContextTransaction中没有这样的API,因为底层DbTransaction中没有这样的API -
在 EF Core 3.0 中可用:参考:docs.microsoft.com/en-us/dotnet/api/…
标签: entity-framework transactions