问题描述
我正在使用实体框架,但使用原始查询进行操作。我的操作如下:
所以我使用事务
using (var transaction = await _context.Database.BeginTransactionAsync())
{
var isExist = await IsExist(id);
if (isExist)
{
var deleteQuery = "delete from ....";
await _context.Database.ExecutesqlRawAsync(deleteQuery);
}
var insertQuery = "insert into ...";
await _context.Database.ExecutesqlRawAsync(insertQuery);
}
如果插入操作失败,删除的记录是否回滚?
解决方法
此方法不会自行启动事务。如果您需要在事务中执行查询,您需要先调用
BeginTransaction(DatabaseFacade,IsolationLevel) or UseTransaction.
因此,在您的情况下,它将在事务中执行查询并在任何查询失败时回滚所有查询