mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 17:20:49 +08:00 
			
		
		
		
	Merge pull request #1171 from dotnetcore/dbcontext-auditlog
#1170 DbContext,仓储 审计日志ChangeInfo增加实体类型 EntityType
This commit is contained in:
		@@ -263,6 +263,10 @@ namespace FreeSql
 | 
				
			|||||||
                /// </summary>
 | 
					                /// </summary>
 | 
				
			||||||
                public object BeforeObject { get; set; }
 | 
					                public object BeforeObject { get; set; }
 | 
				
			||||||
                public EntityChangeType Type { get; set; }
 | 
					                public EntityChangeType Type { get; set; }
 | 
				
			||||||
 | 
					                /// <summary>
 | 
				
			||||||
 | 
					                /// 实体类型
 | 
				
			||||||
 | 
					                /// </summary>
 | 
				
			||||||
 | 
					                public Type EntityType { get; set; }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            /// <summary>
 | 
					            /// <summary>
 | 
				
			||||||
            /// 实体变化记录
 | 
					            /// 实体变化记录
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@ namespace FreeSql
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (adds.Any() == false) return 0;
 | 
					            if (adds.Any() == false) return 0;
 | 
				
			||||||
            var affrows = await this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrowsAsync(cancellationToken);
 | 
					            var affrows = await this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrowsAsync(cancellationToken);
 | 
				
			||||||
            _db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
 | 
					            _db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
 | 
				
			||||||
            return affrows;
 | 
					            return affrows;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -53,7 +53,7 @@ namespace FreeSql
 | 
				
			|||||||
                            var idtval = await this.OrmInsert(data).ExecuteIdentityAsync(cancellationToken);
 | 
					                            var idtval = await this.OrmInsert(data).ExecuteIdentityAsync(cancellationToken);
 | 
				
			||||||
                            IncrAffrows(1);
 | 
					                            IncrAffrows(1);
 | 
				
			||||||
                            _db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
 | 
					                            _db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
 | 
				
			||||||
                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
 | 
					                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = data, Type = DbContext.EntityChangeType.Insert });
 | 
				
			||||||
                            Attach(data);
 | 
					                            Attach(data);
 | 
				
			||||||
                            if (_db.Options.EnableCascadeSave)
 | 
					                            if (_db.Options.EnableCascadeSave)
 | 
				
			||||||
                                await AddOrUpdateNavigateAsync(data, true, null, cancellationToken);
 | 
					                                await AddOrUpdateNavigateAsync(data, true, null, cancellationToken);
 | 
				
			||||||
@@ -62,7 +62,7 @@ namespace FreeSql
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            await DbContextFlushCommandAsync(cancellationToken);
 | 
					                            await DbContextFlushCommandAsync(cancellationToken);
 | 
				
			||||||
                            var newval = (await this.OrmInsert(data).ExecuteInsertedAsync(cancellationToken)).First();
 | 
					                            var newval = (await this.OrmInsert(data).ExecuteInsertedAsync(cancellationToken)).First();
 | 
				
			||||||
                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = newval, Type = DbContext.EntityChangeType.Insert });
 | 
					                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = newval, Type = DbContext.EntityChangeType.Insert });
 | 
				
			||||||
                            IncrAffrows(1);
 | 
					                            IncrAffrows(1);
 | 
				
			||||||
                            _db.OrmOriginal.MapEntityValue(_entityType, newval, data);
 | 
					                            _db.OrmOriginal.MapEntityValue(_entityType, newval, data);
 | 
				
			||||||
                            Attach(newval);
 | 
					                            Attach(newval);
 | 
				
			||||||
@@ -77,7 +77,7 @@ namespace FreeSql
 | 
				
			|||||||
                            var idtval = await this.OrmInsert(data).ExecuteIdentityAsync(cancellationToken);
 | 
					                            var idtval = await this.OrmInsert(data).ExecuteIdentityAsync(cancellationToken);
 | 
				
			||||||
                            IncrAffrows(1);
 | 
					                            IncrAffrows(1);
 | 
				
			||||||
                            _db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
 | 
					                            _db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
 | 
				
			||||||
                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
 | 
					                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = data, Type = DbContext.EntityChangeType.Insert });
 | 
				
			||||||
                            Attach(data);
 | 
					                            Attach(data);
 | 
				
			||||||
                            if (_db.Options.EnableCascadeSave)
 | 
					                            if (_db.Options.EnableCascadeSave)
 | 
				
			||||||
                                await AddOrUpdateNavigateAsync(data, true, null, cancellationToken);
 | 
					                                await AddOrUpdateNavigateAsync(data, true, null, cancellationToken);
 | 
				
			||||||
@@ -115,7 +115,7 @@ namespace FreeSql
 | 
				
			|||||||
                        await DbContextFlushCommandAsync(cancellationToken);
 | 
					                        await DbContextFlushCommandAsync(cancellationToken);
 | 
				
			||||||
                        var rets = await this.OrmInsert(data).ExecuteInsertedAsync(cancellationToken);
 | 
					                        var rets = await this.OrmInsert(data).ExecuteInsertedAsync(cancellationToken);
 | 
				
			||||||
                        if (rets.Count != data.Count()) throw new Exception(DbContextStrings.SpecialError_BatchAdditionFailed(_db.OrmOriginal.Ado.DataType));
 | 
					                        if (rets.Count != data.Count()) throw new Exception(DbContextStrings.SpecialError_BatchAdditionFailed(_db.OrmOriginal.Ado.DataType));
 | 
				
			||||||
                        _db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Insert }));
 | 
					                        _db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a, Type = DbContext.EntityChangeType.Insert }));
 | 
				
			||||||
                        var idx = 0;
 | 
					                        var idx = 0;
 | 
				
			||||||
                        foreach (var s in data)
 | 
					                        foreach (var s in data)
 | 
				
			||||||
                            _db.OrmOriginal.MapEntityValue(_entityType, rets[idx++], s);
 | 
					                            _db.OrmOriginal.MapEntityValue(_entityType, rets[idx++], s);
 | 
				
			||||||
@@ -266,7 +266,7 @@ namespace FreeSql
 | 
				
			|||||||
                            foreach (var midWhere in midWheres) delall.Where(midWhere);
 | 
					                            foreach (var midWhere in midWheres) delall.Where(midWhere);
 | 
				
			||||||
                            var sql = delall.ToSql();
 | 
					                            var sql = delall.ToSql();
 | 
				
			||||||
                            await delall.ExecuteAffrowsAsync(cancellationToken);
 | 
					                            await delall.ExecuteAffrowsAsync(cancellationToken);
 | 
				
			||||||
                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
 | 
					                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        else //保存
 | 
					                        else //保存
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
@@ -404,7 +404,9 @@ namespace FreeSql
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                var update = this.OrmUpdate(null).SetSource(data.Select(a => a.Value)).IgnoreColumns(cuig);
 | 
					                var update = this.OrmUpdate(null).SetSource(data.Select(a => a.Value)).IgnoreColumns(cuig);
 | 
				
			||||||
                var affrows = await update.ExecuteAffrowsAsync(cancellationToken);
 | 
					                var affrows = await update.ExecuteAffrowsAsync(cancellationToken);
 | 
				
			||||||
                _db._entityChangeReport.AddRange(data.Select(a => new DbContext.EntityChangeReport.ChangeInfo { 
 | 
					                _db._entityChangeReport.AddRange(data.Select(a => new DbContext.EntityChangeReport.ChangeInfo
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    EntityType = _entityType,
 | 
				
			||||||
                    Object = a.Value,
 | 
					                    Object = a.Value,
 | 
				
			||||||
                    BeforeObject = _states.TryGetValue(a.Key, out var beforeVal) ? CreateEntityState(beforeVal.Value).Value : null,
 | 
					                    BeforeObject = _states.TryGetValue(a.Key, out var beforeVal) ? CreateEntityState(beforeVal.Value).Value : null,
 | 
				
			||||||
                    Type = DbContext.EntityChangeType.Update
 | 
					                    Type = DbContext.EntityChangeType.Update
 | 
				
			||||||
@@ -471,7 +473,7 @@ namespace FreeSql
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (dels.Any() == false) return 0;
 | 
					            if (dels.Any() == false) return 0;
 | 
				
			||||||
            var affrows = await this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrowsAsync(cancellationToken);
 | 
					            var affrows = await this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrowsAsync(cancellationToken);
 | 
				
			||||||
            _db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
 | 
					            _db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
 | 
				
			||||||
            return affrows;
 | 
					            return affrows;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        async public Task<int> RemoveAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
 | 
					        async public Task<int> RemoveAsync(Expression<Func<TEntity, bool>> predicate, CancellationToken cancellationToken = default)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ namespace FreeSql
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (adds.Any() == false) return 0;
 | 
					            if (adds.Any() == false) return 0;
 | 
				
			||||||
            var affrows = this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrows();
 | 
					            var affrows = this.OrmInsert(adds.Select(a => a.Value)).ExecuteAffrows();
 | 
				
			||||||
            _db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
 | 
					            _db._entityChangeReport.AddRange(adds.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a.Value, Type = DbContext.EntityChangeType.Insert }));
 | 
				
			||||||
            return affrows;
 | 
					            return affrows;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -51,7 +51,7 @@ namespace FreeSql
 | 
				
			|||||||
                            var idtval = this.OrmInsert(data).ExecuteIdentity();
 | 
					                            var idtval = this.OrmInsert(data).ExecuteIdentity();
 | 
				
			||||||
                            IncrAffrows(1);
 | 
					                            IncrAffrows(1);
 | 
				
			||||||
                            _db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
 | 
					                            _db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
 | 
				
			||||||
                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
 | 
					                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = data, Type = DbContext.EntityChangeType.Insert });
 | 
				
			||||||
                            Attach(data);
 | 
					                            Attach(data);
 | 
				
			||||||
                            if (_db.Options.EnableCascadeSave)
 | 
					                            if (_db.Options.EnableCascadeSave)
 | 
				
			||||||
                                AddOrUpdateNavigate(data, true, null);
 | 
					                                AddOrUpdateNavigate(data, true, null);
 | 
				
			||||||
@@ -60,7 +60,7 @@ namespace FreeSql
 | 
				
			|||||||
                        {
 | 
					                        {
 | 
				
			||||||
                            DbContextFlushCommand();
 | 
					                            DbContextFlushCommand();
 | 
				
			||||||
                            var newval = this.OrmInsert(data).ExecuteInserted().First();
 | 
					                            var newval = this.OrmInsert(data).ExecuteInserted().First();
 | 
				
			||||||
                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = newval, Type = DbContext.EntityChangeType.Insert });
 | 
					                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = newval, Type = DbContext.EntityChangeType.Insert });
 | 
				
			||||||
                            IncrAffrows(1);
 | 
					                            IncrAffrows(1);
 | 
				
			||||||
                            _db.OrmOriginal.MapEntityValue(_entityType, newval, data);
 | 
					                            _db.OrmOriginal.MapEntityValue(_entityType, newval, data);
 | 
				
			||||||
                            Attach(newval);
 | 
					                            Attach(newval);
 | 
				
			||||||
@@ -75,7 +75,7 @@ namespace FreeSql
 | 
				
			|||||||
                            var idtval = this.OrmInsert(data).ExecuteIdentity();
 | 
					                            var idtval = this.OrmInsert(data).ExecuteIdentity();
 | 
				
			||||||
                            IncrAffrows(1);
 | 
					                            IncrAffrows(1);
 | 
				
			||||||
                            _db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
 | 
					                            _db.OrmOriginal.SetEntityValueWithPropertyName(_entityType, data, _tableIdentitys[0].CsName, idtval);
 | 
				
			||||||
                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = data, Type = DbContext.EntityChangeType.Insert });
 | 
					                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = data, Type = DbContext.EntityChangeType.Insert });
 | 
				
			||||||
                            Attach(data);
 | 
					                            Attach(data);
 | 
				
			||||||
                            if (_db.Options.EnableCascadeSave)
 | 
					                            if (_db.Options.EnableCascadeSave)
 | 
				
			||||||
                                AddOrUpdateNavigate(data, true, null);
 | 
					                                AddOrUpdateNavigate(data, true, null);
 | 
				
			||||||
@@ -117,7 +117,7 @@ namespace FreeSql
 | 
				
			|||||||
                        DbContextFlushCommand();
 | 
					                        DbContextFlushCommand();
 | 
				
			||||||
                        var rets = this.OrmInsert(data).ExecuteInserted();
 | 
					                        var rets = this.OrmInsert(data).ExecuteInserted();
 | 
				
			||||||
                        if (rets.Count != data.Count()) throw new Exception(DbContextStrings.SpecialError_BatchAdditionFailed(_db.OrmOriginal.Ado.DataType));
 | 
					                        if (rets.Count != data.Count()) throw new Exception(DbContextStrings.SpecialError_BatchAdditionFailed(_db.OrmOriginal.Ado.DataType));
 | 
				
			||||||
                        _db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a, Type = DbContext.EntityChangeType.Insert }));
 | 
					                        _db._entityChangeReport.AddRange(rets.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a, Type = DbContext.EntityChangeType.Insert }));
 | 
				
			||||||
                        var idx = 0;
 | 
					                        var idx = 0;
 | 
				
			||||||
                        foreach (var s in data)
 | 
					                        foreach (var s in data)
 | 
				
			||||||
                            _db.OrmOriginal.MapEntityValue(_entityType, rets[idx++], s);
 | 
					                            _db.OrmOriginal.MapEntityValue(_entityType, rets[idx++], s);
 | 
				
			||||||
@@ -277,7 +277,7 @@ namespace FreeSql
 | 
				
			|||||||
                            foreach (var midWhere in midWheres) delall.Where(midWhere);
 | 
					                            foreach (var midWhere in midWheres) delall.Where(midWhere);
 | 
				
			||||||
                            var sql = delall.ToSql();
 | 
					                            var sql = delall.ToSql();
 | 
				
			||||||
                            delall.ExecuteAffrows();
 | 
					                            delall.ExecuteAffrows();
 | 
				
			||||||
                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
 | 
					                            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        else //保存
 | 
					                        else //保存
 | 
				
			||||||
                        {
 | 
					                        {
 | 
				
			||||||
@@ -440,6 +440,7 @@ namespace FreeSql
 | 
				
			|||||||
                var affrows = update.ExecuteAffrows();
 | 
					                var affrows = update.ExecuteAffrows();
 | 
				
			||||||
                _db._entityChangeReport.AddRange(data.Select(a => new DbContext.EntityChangeReport.ChangeInfo
 | 
					                _db._entityChangeReport.AddRange(data.Select(a => new DbContext.EntityChangeReport.ChangeInfo
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 | 
					                    EntityType = _entityType,
 | 
				
			||||||
                    Object = a.Value,
 | 
					                    Object = a.Value,
 | 
				
			||||||
                    BeforeObject = _states.TryGetValue(a.Key, out var beforeVal) ? CreateEntityState(beforeVal.Value).Value : null,
 | 
					                    BeforeObject = _states.TryGetValue(a.Key, out var beforeVal) ? CreateEntityState(beforeVal.Value).Value : null,
 | 
				
			||||||
                    Type = DbContext.EntityChangeType.Update
 | 
					                    Type = DbContext.EntityChangeType.Update
 | 
				
			||||||
@@ -512,7 +513,7 @@ namespace FreeSql
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (dels.Any() == false) return 0;
 | 
					            if (dels.Any() == false) return 0;
 | 
				
			||||||
            var affrows = this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrows();
 | 
					            var affrows = this.OrmDelete(dels.Select(a => a.Value)).ExecuteAffrows();
 | 
				
			||||||
            _db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeReport.ChangeInfo { Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
 | 
					            _db._entityChangeReport.AddRange(dels.Select(a => new DbContext.EntityChangeReport.ChangeInfo { EntityType = _entityType, Object = a.Value, Type = DbContext.EntityChangeType.Delete }));
 | 
				
			||||||
            return affrows; //https://github.com/dotnetcore/FreeSql/issues/373
 | 
					            return affrows; //https://github.com/dotnetcore/FreeSql/issues/373
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -90,7 +90,7 @@ namespace FreeSql
 | 
				
			|||||||
            var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
 | 
					            var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
 | 
				
			||||||
            var sql = delete.ToSql();
 | 
					            var sql = delete.ToSql();
 | 
				
			||||||
            var affrows = delete.ExecuteAffrows();
 | 
					            var affrows = delete.ExecuteAffrows();
 | 
				
			||||||
            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
 | 
					            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = EntityType, Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
 | 
				
			||||||
            return affrows;
 | 
					            return affrows;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public virtual int Delete(TEntity entity)
 | 
					        public virtual int Delete(TEntity entity)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ namespace FreeSql
 | 
				
			|||||||
            var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
 | 
					            var delete = _dbset.OrmDeleteInternal(null).Where(predicate);
 | 
				
			||||||
            var sql = delete.ToSql();
 | 
					            var sql = delete.ToSql();
 | 
				
			||||||
            var affrows = await delete.ExecuteAffrowsAsync(cancellationToken);
 | 
					            var affrows = await delete.ExecuteAffrowsAsync(cancellationToken);
 | 
				
			||||||
            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
 | 
					            _db._entityChangeReport.Add(new DbContext.EntityChangeReport.ChangeInfo { EntityType = EntityType, Object = sql, Type = DbContext.EntityChangeType.SqlRaw });
 | 
				
			||||||
            return affrows;
 | 
					            return affrows;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        public virtual Task<int> DeleteAsync(TEntity entity, CancellationToken cancellationToken = default)
 | 
					        public virtual Task<int> DeleteAsync(TEntity entity, CancellationToken cancellationToken = default)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user