mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-16 07:57:33 +08:00
Update diff aop log
This commit is contained in:
parent
3788e7b171
commit
686fbf7937
@ -594,6 +594,12 @@ namespace SqlSugar
|
|||||||
_WhereClassByPrimaryKey(list);
|
_WhereClassByPrimaryKey(list);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ISugarQueryable<T> WhereClassByWhereColumns(List<T> list, string[] whereColumns)
|
||||||
|
{
|
||||||
|
_WhereClassByWhereColumns(list,whereColumns);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
public ISugarQueryable<T> WhereClassByPrimaryKey(T data)
|
public ISugarQueryable<T> WhereClassByPrimaryKey(T data)
|
||||||
{
|
{
|
||||||
_WhereClassByPrimaryKey(new List<T>() { data });
|
_WhereClassByPrimaryKey(new List<T>() { data });
|
||||||
@ -738,6 +744,73 @@ namespace SqlSugar
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// if a property that is whereColumns key is a condition
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="whereClassTypes"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public ISugarQueryable<T> _WhereClassByWhereColumns(List<T> whereClassTypes,string[] whereColumns)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (whereClassTypes.HasValue())
|
||||||
|
{
|
||||||
|
var columns = this.Context.EntityMaintenance.GetEntityInfo<T>().Columns.Where(it => whereColumns.Any(x=>x==it.PropertyName)|| whereColumns.Any(x => x.EqualCase(it.DbColumnName))).ToList();
|
||||||
|
Check.Exception(columns == null || columns.Count == 0, "{0} no primary key, Can not use whereColumns ", typeof(T).Name);
|
||||||
|
Check.Exception(this.QueryBuilder.IsSingle() == false, "No support join query");
|
||||||
|
List<IConditionalModel> whereModels = new List<IConditionalModel>();
|
||||||
|
foreach (var item in whereClassTypes)
|
||||||
|
{
|
||||||
|
var cons = new ConditionalCollections();
|
||||||
|
foreach (var column in columns)
|
||||||
|
{
|
||||||
|
WhereType WhereType = WhereType.And;
|
||||||
|
var value = column.PropertyInfo.GetValue(item, null);
|
||||||
|
if (cons.ConditionalList == null)
|
||||||
|
{
|
||||||
|
cons.ConditionalList = new List<KeyValuePair<WhereType, ConditionalModel>>();
|
||||||
|
if (QueryBuilder.WhereInfos.IsNullOrEmpty() && whereModels.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WhereType = WhereType.Or;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var data = new KeyValuePair<WhereType, ConditionalModel>(WhereType, new ConditionalModel()
|
||||||
|
{
|
||||||
|
ConditionalType = ConditionalType.Equal,
|
||||||
|
FieldName = this.QueryBuilder.Builder.GetTranslationColumnName(column.DbColumnName),
|
||||||
|
FieldValue = value.ObjToStringNew(),
|
||||||
|
CSharpTypeName = column.PropertyInfo.PropertyType.Name
|
||||||
|
});
|
||||||
|
if (value is Enum && this.Context.CurrentConnectionConfig?.MoreSettings?.TableEnumIsString != true)
|
||||||
|
{
|
||||||
|
data.Value.FieldValue = Convert.ToInt64(value).ObjToString();
|
||||||
|
data.Value.CSharpTypeName = "int";
|
||||||
|
}
|
||||||
|
//if (this.Context.CurrentConnectionConfig.DbType == DbType.PostgreSQL)
|
||||||
|
//{
|
||||||
|
// data.Value.FieldValueConvertFunc = it =>
|
||||||
|
// {
|
||||||
|
// return UtilMethods.ChangeType2(it, value.GetType());
|
||||||
|
// };
|
||||||
|
//}
|
||||||
|
cons.ConditionalList.Add(data);
|
||||||
|
}
|
||||||
|
if (cons.HasValue())
|
||||||
|
{
|
||||||
|
whereModels.Add(cons);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.Where(whereModels, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.Where(" 1=2 ");
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
/// if a property that is not empty is a condition
|
/// if a property that is not empty is a condition
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="whereClassTypes"></param>
|
/// <param name="whereClassTypes"></param>
|
||||||
|
@ -688,6 +688,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
dt = new DataTable();
|
dt = new DataTable();
|
||||||
}
|
}
|
||||||
|
else if (this.WhereColumnList?.Any() == true)
|
||||||
|
{
|
||||||
|
dt = this.Context.Queryable<T>().Filter(null, true).WhereClassByWhereColumns(this.UpdateObjs.ToList(), this.WhereColumnList.ToArray()).ToDataTable();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dt = this.Context.Queryable<T>().Filter(null, true).WhereClassByPrimaryKey(this.UpdateObjs.ToList()).ToDataTable();
|
dt = this.Context.Queryable<T>().Filter(null, true).WhereClassByPrimaryKey(this.UpdateObjs.ToList()).ToDataTable();
|
||||||
|
@ -75,6 +75,7 @@ namespace SqlSugar
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
ISugarQueryable<T> WhereClass<ClassType>(List<ClassType> whereClassList,bool ignoreDefaultValue = false) where ClassType : class, new();
|
ISugarQueryable<T> WhereClass<ClassType>(List<ClassType> whereClassList,bool ignoreDefaultValue = false) where ClassType : class, new();
|
||||||
ISugarQueryable<T> WhereClassByPrimaryKey(List<T> list);
|
ISugarQueryable<T> WhereClassByPrimaryKey(List<T> list);
|
||||||
|
ISugarQueryable<T> WhereClassByWhereColumns(List<T> list,string[] whereColumns);
|
||||||
ISugarQueryable<T> WhereClassByPrimaryKey(T data) ;
|
ISugarQueryable<T> WhereClassByPrimaryKey(T data) ;
|
||||||
ISugarQueryable<T> WhereColumns(List<Dictionary<string, object>> columns);
|
ISugarQueryable<T> WhereColumns(List<Dictionary<string, object>> columns);
|
||||||
ISugarQueryable<T> WhereColumns(Dictionary<string, object> columns, bool ignoreDefaultValue);
|
ISugarQueryable<T> WhereColumns(Dictionary<string, object> columns, bool ignoreDefaultValue);
|
||||||
|
Loading…
Reference in New Issue
Block a user