diff --git a/FreeSql.DbContext/Repository/Repository/BaseRepository.cs b/FreeSql.DbContext/Repository/Repository/BaseRepository.cs index 675cf0b4..027c53a2 100644 --- a/FreeSql.DbContext/Repository/Repository/BaseRepository.cs +++ b/FreeSql.DbContext/Repository/Repository/BaseRepository.cs @@ -142,7 +142,33 @@ namespace FreeSql } public void BeginEdit(List data) => _dbset.BeginEdit(data); - public int EndEdit() => _dbset.EndEdit(); + public int EndEdit() + { + _db.FlushCommand(); + if (UnitOfWork?.GetOrBeginTransaction(true) == null && _db.OrmOriginal.Ado.TransactionCurrentThread == null) + { + int affrows = 0; + IUnitOfWork olduow = UnitOfWork; + UnitOfWork = new UnitOfWork(_db.OrmOriginal); + try + { + affrows = _dbset.EndEdit(); + UnitOfWork.Commit(); + } + catch + { + UnitOfWork.Rollback(); + throw; + } + finally + { + UnitOfWork.Dispose(); + UnitOfWork = olduow; + } + return affrows; + } + return _dbset.EndEdit(); + } } public abstract partial class BaseRepository : BaseRepository, IBaseRepository