mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 调整 DbSet/Repository DeleteCascadeByDatabase/Delete 区别于数据库/内存的级联删除;#609
This commit is contained in:
		@@ -94,9 +94,12 @@ namespace FreeSql
 | 
			
		||||
            _dbset.RemoveRange(entitys);
 | 
			
		||||
            return _db.SaveChanges();
 | 
			
		||||
        }
 | 
			
		||||
        public List<object> DeleteCascade(TEntity entity) => _dbset.RemoveCascade(entity);
 | 
			
		||||
        public List<object> DeleteCascade(IEnumerable<TEntity> entitys) => _dbset.RemoveRangeCascade(entitys);
 | 
			
		||||
        public List<object> DeleteCascade(Expression<Func<TEntity, bool>> predicate) => _dbset.RemoveCascade(predicate);
 | 
			
		||||
        public List<object> RemoveCascadeByDatabase(Expression<Func<TEntity, bool>> predicate)
 | 
			
		||||
        {
 | 
			
		||||
            var list = _dbset.RemoveCascadeByDatabase(predicate);
 | 
			
		||||
            var affrows = _db.SaveChanges();
 | 
			
		||||
            return list;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public virtual TEntity Insert(TEntity entity)
 | 
			
		||||
        {
 | 
			
		||||
@@ -192,7 +195,6 @@ namespace FreeSql
 | 
			
		||||
            return ret;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public virtual List<object> DeleteCascade(TKey id) => _dbset.RemoveCascade(Find(id));
 | 
			
		||||
        public virtual int Delete(TKey id) => Delete(CheckTKeyAndReturnIdEntity(id));
 | 
			
		||||
        public virtual TEntity Find(TKey id) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOne();
 | 
			
		||||
        public TEntity Get(TKey id) => _dbset.OrmSelectInternal(CheckTKeyAndReturnIdEntity(id)).ToOne();
 | 
			
		||||
 
 | 
			
		||||
@@ -32,9 +32,12 @@ namespace FreeSql
 | 
			
		||||
            _dbset.RemoveRange(entitys);
 | 
			
		||||
            return _db.SaveChangesAsync(cancellationToken);
 | 
			
		||||
        }
 | 
			
		||||
        public virtual Task<List<object>> DeleteCascade(TEntity entity, CancellationToken cancellationToken = default) => _dbset.RemoveCascadeAsync(entity, cancellationToken);
 | 
			
		||||
        public virtual Task<List<object>> DeleteCascade(IEnumerable<TEntity> entitys, CancellationToken cancellationToken = default) => _dbset.RemoveRangeCascadeAsync(entitys, cancellationToken);
 | 
			
		||||
        public virtual Task<List<object>> DeleteCascade(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default) => _dbset.RemoveCascadeAsync(predicate, cancellationToken);
 | 
			
		||||
        async public virtual Task<List<object>> RemoveCascadeByDatabaseAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
 | 
			
		||||
        {
 | 
			
		||||
            var list = await _dbset.RemoveCascadeByDatabaseAsync(predicate, cancellationToken);
 | 
			
		||||
            var affrows = await _db.SaveChangesAsync(cancellationToken);
 | 
			
		||||
            return list;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        async public virtual Task<TEntity> InsertAsync(TEntity entity, CancellationToken cancellationToken = default)
 | 
			
		||||
        {
 | 
			
		||||
@@ -76,7 +79,6 @@ namespace FreeSql
 | 
			
		||||
 | 
			
		||||
    partial class BaseRepository<TEntity, TKey>
 | 
			
		||||
    {
 | 
			
		||||
        public virtual Task<List<object>> DeleteCascadeAsync(TKey id, CancellationToken cancellationToken = default) => _dbset.RemoveCascadeAsync(Find(id), cancellationToken);
 | 
			
		||||
        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);
 | 
			
		||||
 
 | 
			
		||||
@@ -86,13 +86,11 @@ namespace FreeSql
 | 
			
		||||
        int Delete(IEnumerable<TEntity> entitys);
 | 
			
		||||
        int Delete(Expression<Func<TEntity, bool>> predicate);
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 根据设置的导航属性,递归查询删除 OneToOne/OneToMany/ManyToMany 数据,并返回已删除的数据
 | 
			
		||||
        /// 根据设置的 OneToOne/OneToMany/ManyToMany 导航属性,级联查询所有的数据库记录,删除并返回它们
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="entity"></param>
 | 
			
		||||
        /// <param name="predicate"></param>
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        List<object> DeleteCascade(TEntity entity);
 | 
			
		||||
        List<object> DeleteCascade(IEnumerable<TEntity> entitys);
 | 
			
		||||
        List<object> DeleteCascade(Expression<Func<TEntity, bool>> predicate);
 | 
			
		||||
        List<object> RemoveCascadeByDatabase(Expression<Func<TEntity, bool>> predicate);
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// 开始编辑数据,然后调用方法 EndEdit 分析出添加、修改、删除 SQL 语句进行执行<para></para>
 | 
			
		||||
@@ -124,9 +122,7 @@ namespace FreeSql
 | 
			
		||||
        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);
 | 
			
		||||
        Task<List<object>> DeleteCascade(TEntity entity, CancellationToken cancellationToken = default);
 | 
			
		||||
        Task<List<object>> DeleteCascade(IEnumerable<TEntity> entitys, CancellationToken cancellationToken = default);
 | 
			
		||||
        Task<List<object>> DeleteCascade(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default);
 | 
			
		||||
        Task<List<object>> RemoveCascadeByDatabaseAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default);
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -136,14 +132,12 @@ namespace FreeSql
 | 
			
		||||
        TEntity Get(TKey id);
 | 
			
		||||
        TEntity Find(TKey id);
 | 
			
		||||
        int Delete(TKey id);
 | 
			
		||||
        List<object> DeleteCascade(TKey id);
 | 
			
		||||
 | 
			
		||||
#if net40
 | 
			
		||||
#else
 | 
			
		||||
        Task<TEntity> GetAsync(TKey id, CancellationToken cancellationToken = default);
 | 
			
		||||
        Task<TEntity> FindAsync(TKey id, CancellationToken cancellationToken = default);
 | 
			
		||||
        Task<int> DeleteAsync(TKey id, CancellationToken cancellationToken = default);
 | 
			
		||||
        Task<List<object>> DeleteCascadeAsync(TKey id, CancellationToken cancellationToken = default);
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user