mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-23 04:23:47 +08:00
Synchronization code
This commit is contained in:
@@ -0,0 +1,87 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SqlSugar
|
||||||
|
{
|
||||||
|
public class DeleteablePage<T> where T:class,new()
|
||||||
|
{
|
||||||
|
public T[] DataList { get; set; }
|
||||||
|
public ISqlSugarClient Context { get; set; }
|
||||||
|
public int PageSize { get; internal set; }
|
||||||
|
public string TableName { get; internal set; }
|
||||||
|
public bool IsEnableDiffLogEvent { get; internal set; }
|
||||||
|
public DiffLogModel DiffModel { get; internal set; }
|
||||||
|
public List<string> UpdateColumns { get; internal set; }
|
||||||
|
public int ExecuteCommand()
|
||||||
|
{
|
||||||
|
if (DataList.Count() == 1 && DataList.First() == null)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (PageSize == 0) { PageSize = 1000; }
|
||||||
|
var result = 0;
|
||||||
|
var isNoTran = this.Context.Ado.IsNoTran();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (isNoTran)
|
||||||
|
{
|
||||||
|
this.Context.Ado.BeginTran();
|
||||||
|
}
|
||||||
|
this.Context.Utilities.PageEach(DataList, PageSize, pageItem =>
|
||||||
|
{
|
||||||
|
result += this.Context.Deleteable(pageItem).AS(TableName).EnableDiffLogEventIF(IsEnableDiffLogEvent, DiffModel).ExecuteCommand();
|
||||||
|
});
|
||||||
|
if (isNoTran)
|
||||||
|
{
|
||||||
|
this.Context.Ado.CommitTran();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
if (isNoTran)
|
||||||
|
{
|
||||||
|
this.Context.Ado.RollbackTran();
|
||||||
|
}
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
public async Task<int> ExecuteCommandAsync()
|
||||||
|
{
|
||||||
|
if (DataList.Count() == 1 && DataList.First() == null)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (PageSize == 0) { PageSize = 1000; }
|
||||||
|
var result = 0;
|
||||||
|
var isNoTran = this.Context.Ado.IsNoTran();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (isNoTran)
|
||||||
|
{
|
||||||
|
await this.Context.Ado.BeginTranAsync();
|
||||||
|
}
|
||||||
|
await this.Context.Utilities.PageEachAsync(DataList, PageSize, async pageItem =>
|
||||||
|
{
|
||||||
|
result += await this.Context.Deleteable(pageItem).AS(TableName).EnableDiffLogEventIF(IsEnableDiffLogEvent, DiffModel).ExecuteCommandAsync();
|
||||||
|
});
|
||||||
|
if (isNoTran)
|
||||||
|
{
|
||||||
|
await this.Context.Ado.CommitTranAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
if (isNoTran)
|
||||||
|
{
|
||||||
|
await this.Context.Ado.RollbackTranAsync();
|
||||||
|
}
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -524,6 +524,18 @@ namespace SqlSugar
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public DeleteablePage<T> PageSize(int pageSize)
|
||||||
|
{
|
||||||
|
Check.ExceptionEasy(this.DeleteObjects == null, "PageSize can only be deleted as a List<Class> entity collection", "Deleteable.PageSize()只能是List<Class>实体集合方式删除,并且集合不能为null");
|
||||||
|
DeleteablePage<T> result = new DeleteablePage<T>();
|
||||||
|
result.DataList = this.DeleteObjects.ToArray();
|
||||||
|
result.Context = this.Context;
|
||||||
|
result.DiffModel = this.diffModel;
|
||||||
|
result.IsEnableDiffLogEvent= this.IsEnableDiffLogEvent;
|
||||||
|
result.TableName = this.DeleteBuilder.AsName;
|
||||||
|
result.PageSize = pageSize;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
public IDeleteable<T> With(string lockString)
|
public IDeleteable<T> With(string lockString)
|
||||||
{
|
{
|
||||||
if (this.Context.CurrentConnectionConfig.DbType == DbType.SqlServer)
|
if (this.Context.CurrentConnectionConfig.DbType == DbType.SqlServer)
|
||||||
|
@@ -22,6 +22,7 @@ namespace SqlSugar
|
|||||||
IDeleteable<T> Where(T deleteObj);
|
IDeleteable<T> Where(T deleteObj);
|
||||||
IDeleteable<T> Where(Expression<Func<T, bool>> expression);
|
IDeleteable<T> Where(Expression<Func<T, bool>> expression);
|
||||||
IDeleteable<T> Where(List<T> deleteObjs);
|
IDeleteable<T> Where(List<T> deleteObjs);
|
||||||
|
DeleteablePage<T> PageSize(int pageSize);
|
||||||
IDeleteable<T> In<PkType>(PkType primaryKeyValue);
|
IDeleteable<T> In<PkType>(PkType primaryKeyValue);
|
||||||
IDeleteable<T> In<PkType>(PkType[] primaryKeyValues);
|
IDeleteable<T> In<PkType>(PkType[] primaryKeyValues);
|
||||||
IDeleteable<T> In<PkType>(List<PkType> primaryKeyValues);
|
IDeleteable<T> In<PkType>(List<PkType> primaryKeyValues);
|
||||||
|
Reference in New Issue
Block a user