Storageable support bulkUpdate(+1)

This commit is contained in:
sunkaixuna 2021-12-11 13:47:22 +08:00
parent 32ae161a1e
commit 11635d48a4
2 changed files with 33 additions and 4 deletions

View File

@ -125,7 +125,7 @@ namespace SqlSugar
var other = messageList.Where(it => it.StorageType == StorageType.Other).ToList(); var other = messageList.Where(it => it.StorageType == StorageType.Other).ToList();
StorageableResult<T> result = new StorageableResult<T>() StorageableResult<T> result = new StorageableResult<T>()
{ {
_IsWhereColumn= this.whereExpression != null, _WhereColumnList= wherecolumnList,
_AsName =asname, _AsName =asname,
_Context=this.Context, _Context=this.Context,
AsDeleteable = this.Context.Deleteable<T>().AS(asname), AsDeleteable = this.Context.Deleteable<T>().AS(asname),

View File

@ -88,7 +88,7 @@ namespace SqlSugar
public IInsertable<T> AsInsertable { get; set; } public IInsertable<T> AsInsertable { get; set; }
public IUpdateable<T> AsUpdateable { get; set; } public IUpdateable<T> AsUpdateable { get; set; }
public IDeleteable<T> AsDeleteable { get; set; } public IDeleteable<T> AsDeleteable { get; set; }
internal bool _IsWhereColumn { get; set; } internal List<EntityColumnInfo> _WhereColumnList { get; set; }
internal string _AsName { get; set; } internal string _AsName { get; set; }
internal SqlSugarProvider _Context { get; set; } internal SqlSugarProvider _Context { get; set; }
@ -103,13 +103,42 @@ namespace SqlSugar
public int BulkUpdate() public int BulkUpdate()
{ {
Check.Exception(_IsWhereColumn, "Storageable.BulkCopy no support WhereColumns"); Check.Exception(_WhereColumnList!=null&&_WhereColumnList.Any(),ErrorMessage.GetThrowMessage( "Storageable.BulkUpdate(+0) no support WhereColumns, Use Storageable(+1)", "请使用 Storageable.BulkUpdate +1 重载"));
return this._Context.Fastest<T>().AS(_AsName).BulkUpdate(UpdateList.Select(it => it.Item).ToList()); return this._Context.Fastest<T>().AS(_AsName).BulkUpdate(UpdateList.Select(it => it.Item).ToList());
} }
public Task<int> BulkUpdateAsync() public Task<int> BulkUpdateAsync()
{ {
Check.Exception(_IsWhereColumn, "Storageable.BulkCopy no support WhereColumns"); Check.Exception(_WhereColumnList != null && _WhereColumnList.Any(), ErrorMessage.GetThrowMessage("Storageable.BulkUpdate(+0) no support WhereColumns, Use Storageable(+1)", "请使用 Storageable.BulkUpdate +1 重载"));
return this._Context.Fastest<T>().AS(_AsName).BulkUpdateAsync(UpdateList.Select(it => it.Item).ToList()); return this._Context.Fastest<T>().AS(_AsName).BulkUpdateAsync(UpdateList.Select(it => it.Item).ToList());
} }
public int BulkUpdate(params string[] UpdateColumns)
{
Check.Exception(UpdateColumns==null, "UpdateColumns is null");
if (_WhereColumnList != null && _WhereColumnList.Any())
{
return this._Context.Fastest<T>().AS(_AsName).BulkUpdate(UpdateList.Select(it => it.Item).ToList(), _WhereColumnList.Select(it => it.DbColumnName).ToArray(), UpdateColumns);
}
else
{
var pkColumns = this._Context.EntityMaintenance.GetEntityInfo<T>().Columns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName).ToArray();
Check.Exception(pkColumns.Count()==0,"need primary key");
return this._Context.Fastest<T>().AS(_AsName).BulkUpdate(UpdateList.Select(it => it.Item).ToList(), pkColumns, UpdateColumns);
}
}
public async Task<int> BulkUpdateAsync(params string[] UpdateColumns)
{
Check.Exception(UpdateColumns == null, "UpdateColumns is null");
if (_WhereColumnList != null && _WhereColumnList.Any())
{
return await this._Context.Fastest<T>().AS(_AsName).BulkUpdateAsync(UpdateList.Select(it => it.Item).ToList(), _WhereColumnList.Select(it => it.DbColumnName).ToArray(), UpdateColumns);
}
else
{
var pkColumns = this._Context.EntityMaintenance.GetEntityInfo<T>().Columns.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName).ToArray();
Check.Exception(pkColumns.Count() == 0, "need primary key");
return await this._Context.Fastest<T>().AS(_AsName).BulkUpdateAsync(UpdateList.Select(it => it.Item).ToList(), pkColumns, UpdateColumns);
}
}
} }
} }