mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-24 18:04:52 +08:00
Updateable.UpdateColumns support overlay
This commit is contained in:
parent
dceb6d1a5c
commit
ddf53b593c
@ -33,6 +33,7 @@ namespace SqlSugar
|
|||||||
public bool IsOffIdentity { get; set; }
|
public bool IsOffIdentity { get; set; }
|
||||||
public bool IsWhereColumns { get; set; }
|
public bool IsWhereColumns { get; set; }
|
||||||
public bool? IsListUpdate { get; set; }
|
public bool? IsListUpdate { get; set; }
|
||||||
|
public List<string> UpdateColumns { get; set; }
|
||||||
|
|
||||||
public virtual string SqlTemplate
|
public virtual string SqlTemplate
|
||||||
{
|
{
|
||||||
|
@ -80,6 +80,11 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public virtual int ExecuteCommand()
|
public virtual int ExecuteCommand()
|
||||||
{
|
{
|
||||||
|
if (this.UpdateBuilder.UpdateColumns.HasValue())
|
||||||
|
{
|
||||||
|
var columns = this.UpdateBuilder.UpdateColumns;
|
||||||
|
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => GetPrimaryKeys().Select(iit => iit.ToLower()).Contains(it.DbColumnName.ToLower()) || columns.Contains(it.PropertyName, StringComparer.OrdinalIgnoreCase)).ToList();
|
||||||
|
}
|
||||||
if (this.IsTrakingDatas() || IsUpdateNullByList())
|
if (this.IsTrakingDatas() || IsUpdateNullByList())
|
||||||
{
|
{
|
||||||
int trakRows = DatasTrackingExecommand();
|
int trakRows = DatasTrackingExecommand();
|
||||||
@ -117,6 +122,11 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public virtual async Task<int> ExecuteCommandAsync()
|
public virtual async Task<int> ExecuteCommandAsync()
|
||||||
{
|
{
|
||||||
|
if (this.UpdateBuilder.UpdateColumns.HasValue())
|
||||||
|
{
|
||||||
|
var columns = this.UpdateBuilder.UpdateColumns;
|
||||||
|
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => GetPrimaryKeys().Select(iit => iit.ToLower()).Contains(it.DbColumnName.ToLower()) || columns.Contains(it.PropertyName, StringComparer.OrdinalIgnoreCase)).ToList();
|
||||||
|
}
|
||||||
if (this.IsTrakingDatas()||IsUpdateNullByList())
|
if (this.IsTrakingDatas()||IsUpdateNullByList())
|
||||||
{
|
{
|
||||||
int trakRows =await DatasTrackingExecommandAsync();
|
int trakRows =await DatasTrackingExecommandAsync();
|
||||||
@ -176,6 +186,7 @@ namespace SqlSugar
|
|||||||
result.UpdateBuilder.IsNoUpdateDefaultValue = this.UpdateBuilder.IsNoUpdateDefaultValue;
|
result.UpdateBuilder.IsNoUpdateDefaultValue = this.UpdateBuilder.IsNoUpdateDefaultValue;
|
||||||
result.UpdateBuilder.IsNoUpdateNull= this.UpdateBuilder.IsNoUpdateNull;
|
result.UpdateBuilder.IsNoUpdateNull= this.UpdateBuilder.IsNoUpdateNull;
|
||||||
result.UpdateBuilder.SetValues= this.UpdateBuilder.SetValues.ToList();
|
result.UpdateBuilder.SetValues= this.UpdateBuilder.SetValues.ToList();
|
||||||
|
result.UpdateBuilder.UpdateColumns = this.UpdateBuilder.UpdateColumns.ToList();
|
||||||
result.UpdateBuilder.Context = this.Context;
|
result.UpdateBuilder.Context = this.Context;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -395,24 +406,34 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
ThrowUpdateByExpression();
|
ThrowUpdateByExpression();
|
||||||
var updateColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList();
|
var updateColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList();
|
||||||
List<string> primaryKeys = GetPrimaryKeys();
|
if (this.UpdateBuilder.UpdateColumns == null)
|
||||||
foreach (var item in this.UpdateBuilder.DbColumnInfoList)
|
|
||||||
{
|
{
|
||||||
var mappingInfo = primaryKeys.SingleOrDefault(i => item.DbColumnName.Equals(i, StringComparison.CurrentCultureIgnoreCase));
|
this.UpdateBuilder.UpdateColumns = new List<string>();
|
||||||
if (mappingInfo != null && mappingInfo.Any())
|
|
||||||
{
|
|
||||||
item.IsPrimarykey = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => updateColumns.Any(uc => uc.Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase) || uc.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey || it.IsIdentity).ToList();
|
this.UpdateBuilder.UpdateColumns.AddRange(updateColumns);
|
||||||
|
//List<string> primaryKeys = GetPrimaryKeys();
|
||||||
|
//foreach (var item in this.UpdateBuilder.DbColumnInfoList)
|
||||||
|
//{
|
||||||
|
// var mappingInfo = primaryKeys.SingleOrDefault(i => item.DbColumnName.Equals(i, StringComparison.CurrentCultureIgnoreCase));
|
||||||
|
// if (mappingInfo != null && mappingInfo.Any())
|
||||||
|
// {
|
||||||
|
// item.IsPrimarykey = true;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => updateColumns.Any(uc => uc.Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase) || uc.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey || it.IsIdentity).ToList();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
public IUpdateable<T> UpdateColumns(string[] columns)
|
public IUpdateable<T> UpdateColumns(string[] columns)
|
||||||
{
|
{
|
||||||
|
if (this.UpdateBuilder.UpdateColumns == null)
|
||||||
|
{
|
||||||
|
this.UpdateBuilder.UpdateColumns = new List<string>();
|
||||||
|
}
|
||||||
|
this.UpdateBuilder.UpdateColumns.AddRange(columns);
|
||||||
if (columns.HasValue())
|
if (columns.HasValue())
|
||||||
{
|
{
|
||||||
ThrowUpdateByExpression();
|
ThrowUpdateByExpression();
|
||||||
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => GetPrimaryKeys().Select(iit => iit.ToLower()).Contains(it.DbColumnName.ToLower()) || columns.Contains(it.PropertyName, StringComparer.OrdinalIgnoreCase)).ToList();
|
//this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => GetPrimaryKeys().Select(iit => iit.ToLower()).Contains(it.DbColumnName.ToLower()) || columns.Contains(it.PropertyName, StringComparer.OrdinalIgnoreCase)).ToList();
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user