- 增加 FreeSql.DbContext/Repository Async CancellationToken 参数;#537

This commit is contained in:
2881099
2020-11-17 19:44:47 +08:00
parent c04a32659d
commit 2947572f05
8 changed files with 122 additions and 137 deletions

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Concurrent;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
namespace FreeSql
@ -81,9 +82,9 @@ namespace FreeSql
}
#if net40
#else
async public override Task<int> SaveChangesAsync()
async public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
{
await FlushCommandAsync();
await FlushCommandAsync(cancellationToken);
return SaveChangesSuccess();
}
#endif

View File

@ -189,7 +189,7 @@ namespace FreeSql
}
public virtual int Delete(TKey id) => Delete(CheckTKeyAndReturnIdEntity(id));
public virtual TEntity Find(TKey id) => Select.WhereDynamic(CheckTKeyAndReturnIdEntity(id)).ToOne();
public TEntity Get(TKey id) => Find(id);
public virtual TEntity Find(TKey id) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOne();
public TEntity Get(TKey id) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOne();
}
}

View File

@ -3,6 +3,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
#if net40
@ -13,68 +14,68 @@ namespace FreeSql
where TEntity : class
{
async virtual public Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate)
async virtual public Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
{
var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
var sql = delete.ToSql();
var affrows = await delete.ExecuteAffrowsAsync();
var affrows = await delete.ExecuteAffrowsAsync(cancellationToken);
_db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
return affrows;
}
public virtual Task<int> DeleteAsync(TEntity entity)
public virtual Task<int> DeleteAsync(TEntity entity, CancellationToken cancellationToken = default)
{
_dbset.Remove(entity);
return _db.SaveChangesAsync();
return _db.SaveChangesAsync(cancellationToken);
}
public virtual Task<int> DeleteAsync(IEnumerable<TEntity> entitys)
public virtual Task<int> DeleteAsync(IEnumerable<TEntity> entitys, CancellationToken cancellationToken = default)
{
_dbset.RemoveRange(entitys);
return _db.SaveChangesAsync();
return _db.SaveChangesAsync(cancellationToken);
}
async public virtual Task<TEntity> InsertAsync(TEntity entity)
async public virtual Task<TEntity> InsertAsync(TEntity entity, CancellationToken cancellationToken = default)
{
await _dbset.AddAsync(entity);
await _db.SaveChangesAsync();
await _dbset.AddAsync(entity, cancellationToken);
await _db.SaveChangesAsync(cancellationToken);
return entity;
}
async public virtual Task<List<TEntity>> InsertAsync(IEnumerable<TEntity> entitys)
async public virtual Task<List<TEntity>> InsertAsync(IEnumerable<TEntity> entitys, CancellationToken cancellationToken = default)
{
await _dbset.AddRangeAsync(entitys);
await _db.SaveChangesAsync();
await _dbset.AddRangeAsync(entitys, cancellationToken);
await _db.SaveChangesAsync(cancellationToken);
return entitys.ToList();
}
public virtual Task<int> UpdateAsync(TEntity entity)
public virtual Task<int> UpdateAsync(TEntity entity, CancellationToken cancellationToken = default)
{
_dbset.Update(entity);
return _db.SaveChangesAsync();
return _db.SaveChangesAsync(cancellationToken);
}
public virtual Task<int> UpdateAsync(IEnumerable<TEntity> entitys)
public virtual Task<int> UpdateAsync(IEnumerable<TEntity> entitys, CancellationToken cancellationToken = default)
{
_dbset.UpdateRange(entitys);
return _db.SaveChangesAsync();
return _db.SaveChangesAsync(cancellationToken);
}
async public virtual Task<TEntity> InsertOrUpdateAsync(TEntity entity)
async public virtual Task<TEntity> InsertOrUpdateAsync(TEntity entity, CancellationToken cancellationToken = default)
{
await _dbset.AddOrUpdateAsync(entity);
await _db.SaveChangesAsync();
await _dbset.AddOrUpdateAsync(entity, cancellationToken);
await _db.SaveChangesAsync(cancellationToken);
return entity;
}
async public Task SaveManyAsync(TEntity entity, string propertyName)
async public Task SaveManyAsync(TEntity entity, string propertyName, CancellationToken cancellationToken = default)
{
await _dbset.SaveManyAsync(entity, propertyName);
await _db.SaveChangesAsync();
await _dbset.SaveManyAsync(entity, propertyName, cancellationToken);
await _db.SaveChangesAsync(cancellationToken);
}
}
partial class BaseRepository<TEntity, TKey>
{
public virtual Task<int> DeleteAsync(TKey id) => DeleteAsync(CheckTKeyAndReturnIdEntity(id));
public virtual Task<TEntity> FindAsync(TKey id) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOneAsync();
public Task<TEntity> GetAsync(TKey id) => FindAsync(id);
public virtual Task<int> DeleteAsync(TKey id, CancellationToken cancellationToken = default) => DeleteAsync(CheckTKeyAndReturnIdEntity(id), cancellationToken);
public virtual Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOneAsync(cancellationToken);
public Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOneAsync(cancellationToken);
}
}
#endif

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
namespace FreeSql
@ -98,17 +99,17 @@ namespace FreeSql
#if net40
#else
Task<TEntity> InsertAsync(TEntity entity);
Task<List<TEntity>> InsertAsync(IEnumerable<TEntity> entitys);
Task<TEntity> InsertAsync(TEntity entity, CancellationToken cancellationToken = default);
Task<List<TEntity>> InsertAsync(IEnumerable<TEntity> entitys, CancellationToken cancellationToken = default);
Task<int> UpdateAsync(TEntity entity);
Task<int> UpdateAsync(IEnumerable<TEntity> entitys);
Task<TEntity> InsertOrUpdateAsync(TEntity entity);
Task SaveManyAsync(TEntity entity, string propertyName);
Task<int> UpdateAsync(TEntity entity, CancellationToken cancellationToken = default);
Task<int> UpdateAsync(IEnumerable<TEntity> entitys, CancellationToken cancellationToken = default);
Task<TEntity> InsertOrUpdateAsync(TEntity entity, CancellationToken cancellationToken = default);
Task SaveManyAsync(TEntity entity, string propertyName, CancellationToken cancellationToken = default);
Task<int> DeleteAsync(TEntity entity);
Task<int> DeleteAsync(IEnumerable<TEntity> entitys);
Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate);
Task<int> DeleteAsync(TEntity entity, CancellationToken cancellationToken = default);
Task<int> DeleteAsync(IEnumerable<TEntity> entitys, CancellationToken cancellationToken = default);
Task<int> DeleteAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default);
#endif
}
@ -121,9 +122,9 @@ namespace FreeSql
#if net40
#else
Task<TEntity> GetAsync(TKey id);
Task<TEntity> FindAsync(TKey id);
Task<int> DeleteAsync(TKey id);
Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default);
Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default);
Task<int> DeleteAsync(TKey id, CancellationToken cancellationToken = default);
#endif
}
}