EF Core事务
原文链接:https://blog.csdn.net/m0_47659279/article/details/119929767
EF Core 事务
EF Core提供了SaveChange方法,可以把数据操作好之后再统一调用SaveChange方法,这样就实现了简单的事务功能
如果需要多个SaveChange形成一个事务,就是说多个SaveChange要么全部成功,要么全部不执行,则需要使用DbContext.Database.BeginTransaction()来开启一个事务
出现错误时调用IDbContextTransaction.Rollback()方法实现回滚
例如
// 开启事务
using (IDbContextTransaction dbContextTransaction = context.Database.BeginTransaction())
{
try
{
context.Cities.Add(new City() { CityName = "Test", CityUrlCode = "123", Province = 2 });
context.SaveChanges();
context.Cities.Add(new City() { CityName = "Test2", CityUrlCode = "这是一个会导致错误的值这是一个会导致错误的值这是一个会导致错误的值这是一个会导致错误的值这是一个会导致错误的值这是一个会导致错误的值", Province = 2 });
context.SaveChanges();
//提交事务
dbContextTransaction.Commit();
}
catch
{
//回滚
dbContextTransaction.Rollback();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
运行后发现数据库中一条记录也没有添加,说明回滚成功了
保存点
在事务中创建保存点,这样在失败时可以回滚到该保存点
例如
using (IDbContextTransaction dbContextTransaction = context.Database.BeginTransaction())
{
try
{
context.Cities.Add(new City() { CityName = "Test", CityUrlCode = "123", Province = 2 });
context.SaveChanges();
//创建保存点,并在失败时回滚到该保存点:
dbContextTransaction.CreateSavepoint("savePoint1");
context.Cities.Add(new City() { CityName = "Test2", CityUrlCode = "这是一个会导致错误的值这是一个会导致错误的值这是一个会导致错误的值这是一个会导致错误的值这是一个会导致错误的值这是一个会导致错误的值", Province = 2 });
context.SaveChanges();
dbContextTransaction.Commit();
}
catch
{
//回滚到保存点
dbContextTransaction.RollbackToSavepoint("savePoint1");
dbContextTransaction.Commit();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
运行后发现数据库中多了一条记录,说明回滚到保存点成功了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2019-08-08 转:异步提交表单插件jquery.form.min.js的使用实例,后台net同样可以接收到Excel文件进行处理
2019-08-08 jquery.form.min.js的ajaxSubmit上传Excel文件,后台返回不是标准json格式回调函数中 textstatus报错parsererror