EF Code First DBContext 和事务

发布于 2024-11-07 09:12:33 字数 212 浏览 1 评论 0原文

我想知道使用 DBContext 实现事务的最佳方法是什么。特别是,

  1. 如果我更改多个实体,DbContext.SaveChanges 是否会实现内部事务?
  2. 如果我想多次调用DbContext.SaveChanges(相同contxet/不同contxet),如何实现事务?

I would like know what is the best possible way to implement transactions with DBContext. In particular,

  1. Does DbContext.SaveChanges implement transaction internall if i change multiple entities?
  2. If i want to call DbContext.SaveChanges multiple times(same contxet/different contxets), how transaction can be achieved?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凶凌 2024-11-14 09:12:33
  1. 是的。 SaveChanges 在内部使用事务。
  2. 使用 TransactionScope 包装对 SaveChanges 的多个调用

示例:

using(var scope = new TransactionScope(TransactionScopeOption.Required,
    new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{
    // Do something 
    context.SaveChanges();
    // Do something else
    context.SaveChanges();

    scope.Complete();
}
  1. Yes. SaveChanges uses transaction internally.
  2. Use TransactionScope to wrap multiple calls to SaveChanges

Example:

using(var scope = new TransactionScope(TransactionScopeOption.Required,
    new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{
    // Do something 
    context.SaveChanges();
    // Do something else
    context.SaveChanges();

    scope.Complete();
}
听风吹 2024-11-14 09:12:33

对于异步操作,请执行以下操作。

using(var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
    // Do something 
    await context.SaveChangesAsync();
    // Do something else
    await context.SaveChangesAsync();

    scope.Complete();
}

参考文献:learn.microsoft.com/en-us/ef/ef6/保存/交易

For asynchronous operation do the following.

using(var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
{
    // Do something 
    await context.SaveChangesAsync();
    // Do something else
    await context.SaveChangesAsync();

    scope.Complete();
}

References: learn.microsoft.com/en-us/ef/ef6/saving/transactions

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文