mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-11-08 02:14:53 +08:00
Update core
This commit is contained in:
@@ -733,7 +733,7 @@ namespace SqlSugar
|
|||||||
// return asyncInsertable;
|
// return asyncInsertable;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
private void After(string sql, long? result)
|
protected void After(string sql, long? result)
|
||||||
{
|
{
|
||||||
if (this.IsEnableDiffLogEvent)
|
if (this.IsEnableDiffLogEvent)
|
||||||
{
|
{
|
||||||
@@ -753,7 +753,7 @@ namespace SqlSugar
|
|||||||
this.RemoveCacheFunc();
|
this.RemoveCacheFunc();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void Before(string sql)
|
protected void Before(string sql)
|
||||||
{
|
{
|
||||||
if (this.IsEnableDiffLogEvent)
|
if (this.IsEnableDiffLogEvent)
|
||||||
{
|
{
|
||||||
@@ -841,12 +841,14 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
if (this.InsertObjs.HasValue())
|
if (this.InsertObjs.HasValue())
|
||||||
{
|
{
|
||||||
|
var oldColumns = this.InsertBuilder.DbColumnInfoList.Select(it => it.PropertyName).ToList();
|
||||||
var expression = (LambdaExpression.Lambda(method).Body as LambdaExpression).Body;
|
var expression = (LambdaExpression.Lambda(method).Body as LambdaExpression).Body;
|
||||||
Check.Exception(!(expression is MethodCallExpression), method.ToString() + " is not method");
|
Check.Exception(!(expression is MethodCallExpression), method.ToString() + " is not method");
|
||||||
var callExpresion = expression as MethodCallExpression;
|
var callExpresion = expression as MethodCallExpression;
|
||||||
UtilMethods.DataInoveByExpresson(this.InsertObjs,callExpresion);
|
UtilMethods.DataInoveByExpresson(this.InsertObjs,callExpresion);
|
||||||
this.InsertBuilder.DbColumnInfoList = new List<DbColumnInfo>();
|
this.InsertBuilder.DbColumnInfoList = new List<DbColumnInfo>();
|
||||||
Init();
|
Init();
|
||||||
|
this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => oldColumns.Contains(it.PropertyName)).ToList();
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -825,7 +825,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
public virtual bool Any()
|
public virtual bool Any()
|
||||||
{
|
{
|
||||||
return this.Count() > 0;
|
return this.Select("1").First()!=null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual ISugarQueryable<TResult> Select<TResult>(Expression<Func<T, TResult>> expression)
|
public virtual ISugarQueryable<TResult> Select<TResult>(Expression<Func<T, TResult>> expression)
|
||||||
@@ -893,7 +893,30 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
var splitColumn = this.EntityInfo.Columns.FirstOrDefault(it => it.PropertyInfo.GetCustomAttribute<SplitFieldAttribute>() != null);
|
var splitColumn = this.EntityInfo.Columns.FirstOrDefault(it => it.PropertyInfo.GetCustomAttribute<SplitFieldAttribute>() != null);
|
||||||
var columnName = this.SqlBuilder.GetTranslationColumnName(splitColumn.DbColumnName);
|
var columnName = this.SqlBuilder.GetTranslationColumnName(splitColumn.DbColumnName);
|
||||||
return this.Where($" {columnName}>=@spBeginTime AND {columnName}<= @spEndTime",new { spBeginTime = beginTime , spEndTime = endTime}).SplitTable(tas => tas.Where(y => y.Date >= beginTime && y.Date <= endTime));
|
return this.Where($" {columnName}>=@spBeginTime AND {columnName}<= @spEndTime",new { spBeginTime = beginTime , spEndTime = endTime}).SplitTable(tas => {
|
||||||
|
|
||||||
|
var dateNull = DateTime.MinValue;
|
||||||
|
var min = tas.Where(it => it.Date <= beginTime.Date).Select(it=>it.Date).OrderByDescending(it=>it.Date).FirstOrDefault();
|
||||||
|
var max = tas.Where(it => it.Date >= endTime.Date).Select(it => it.Date).OrderBy(it => it.Date).FirstOrDefault();
|
||||||
|
if (max == dateNull && min == dateNull)
|
||||||
|
{
|
||||||
|
return tas.Take(1);
|
||||||
|
}
|
||||||
|
if (max == dateNull)
|
||||||
|
{
|
||||||
|
max = tas.Where(it => it.Date <= endTime).Select(it => it.Date).OrderByDescending(it => it.Date).FirstOrDefault();
|
||||||
|
}
|
||||||
|
if (max == dateNull)
|
||||||
|
{
|
||||||
|
max = min;
|
||||||
|
}
|
||||||
|
if (min == dateNull)
|
||||||
|
{
|
||||||
|
min = max;
|
||||||
|
}
|
||||||
|
var result= tas.Where(y => y.Date >= min && y.Date <= max);
|
||||||
|
return result;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
public ISugarQueryable<T> SplitTable(Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>> getTableNamesFunc)
|
public ISugarQueryable<T> SplitTable(Func<List<SplitTableInfo>, IEnumerable<SplitTableInfo>> getTableNamesFunc)
|
||||||
{
|
{
|
||||||
@@ -1181,6 +1204,11 @@ namespace SqlSugar
|
|||||||
this.QueryBuilder.ResultType = typeof(SugarCacheDictionary);
|
this.QueryBuilder.ResultType = typeof(SugarCacheDictionary);
|
||||||
var keyName = QueryBuilder.GetExpressionValue(key, ResolveExpressType.FieldSingle).GetResultString();
|
var keyName = QueryBuilder.GetExpressionValue(key, ResolveExpressType.FieldSingle).GetResultString();
|
||||||
var valueName = QueryBuilder.GetExpressionValue(value, ResolveExpressType.FieldSingle).GetResultString();
|
var valueName = QueryBuilder.GetExpressionValue(value, ResolveExpressType.FieldSingle).GetResultString();
|
||||||
|
if (this.QueryBuilder.IsSingle() == false)
|
||||||
|
{
|
||||||
|
keyName = this.QueryBuilder.TableShortName+ "." + keyName;
|
||||||
|
valueName = this.QueryBuilder.TableShortName + "." + valueName;
|
||||||
|
}
|
||||||
var result = this.Select<KeyValuePair<string, object>>(keyName + "," + valueName).ToList().ToDictionary(it => it.Key.ObjToString(), it => it.Value);
|
var result = this.Select<KeyValuePair<string, object>>(keyName + "," + valueName).ToList().ToDictionary(it => it.Key.ObjToString(), it => it.Value);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1168,5 +1168,14 @@ namespace SqlSugar
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region AsTenant
|
||||||
|
public ITenant AsTenant()
|
||||||
|
{
|
||||||
|
Check.Exception(true,ErrorMessage.GetThrowMessage("Child objects do not support tenant methods, var childDb= Db.GetConnection(confid) ,Db is master ", "Db子对象不支持租户方法,请使用主对象,例如:var childDb= Db.GetConnection(confid) Db是主对象,childDb是子对象 "));
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -203,12 +203,14 @@ namespace SqlSugar
|
|||||||
ThrowUpdateByExpression();
|
ThrowUpdateByExpression();
|
||||||
if (this.UpdateObjs.HasValue())
|
if (this.UpdateObjs.HasValue())
|
||||||
{
|
{
|
||||||
|
var oldColumns = this.UpdateBuilder.DbColumnInfoList.Select(it => it.PropertyName).ToList();
|
||||||
var expression = (LambdaExpression.Lambda(method).Body as LambdaExpression).Body;
|
var expression = (LambdaExpression.Lambda(method).Body as LambdaExpression).Body;
|
||||||
Check.Exception(!(expression is MethodCallExpression), method.ToString() + " is not method");
|
Check.Exception(!(expression is MethodCallExpression), method.ToString() + " is not method");
|
||||||
var callExpresion = expression as MethodCallExpression;
|
var callExpresion = expression as MethodCallExpression;
|
||||||
UtilMethods.DataInoveByExpresson(this.UpdateObjs, callExpresion);
|
UtilMethods.DataInoveByExpresson(this.UpdateObjs, callExpresion);
|
||||||
this.UpdateBuilder.DbColumnInfoList = new List<DbColumnInfo>();
|
this.UpdateBuilder.DbColumnInfoList = new List<DbColumnInfo>();
|
||||||
Init();
|
Init();
|
||||||
|
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => oldColumns.Contains(it.PropertyName)).ToList();
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@@ -316,7 +318,7 @@ namespace SqlSugar
|
|||||||
public IUpdateable<T> SetColumns(Expression<Func<T, bool>> columns)
|
public IUpdateable<T> SetColumns(Expression<Func<T, bool>> columns)
|
||||||
{
|
{
|
||||||
ThrowUpdateByObject();
|
ThrowUpdateByObject();
|
||||||
CheckTranscodeing();
|
|
||||||
var binaryExp = columns.Body as BinaryExpression;
|
var binaryExp = columns.Body as BinaryExpression;
|
||||||
Check.Exception(!binaryExp.NodeType.IsIn(ExpressionType.Equal), "No support {0}", columns.ToString());
|
Check.Exception(!binaryExp.NodeType.IsIn(ExpressionType.Equal), "No support {0}", columns.ToString());
|
||||||
Check.Exception(!(binaryExp.Left is MemberExpression) && !(binaryExp.Left is UnaryExpression), "No support {0}", columns.ToString());
|
Check.Exception(!(binaryExp.Left is MemberExpression) && !(binaryExp.Left is UnaryExpression), "No support {0}", columns.ToString());
|
||||||
@@ -327,6 +329,12 @@ namespace SqlSugar
|
|||||||
expResult = Regex.Split(expResult, " IS NULL ")[0]+" = NULL ";
|
expResult = Regex.Split(expResult, " IS NULL ")[0]+" = NULL ";
|
||||||
}
|
}
|
||||||
string key = SqlBuilder.GetNoTranslationColumnName(expResult);
|
string key = SqlBuilder.GetNoTranslationColumnName(expResult);
|
||||||
|
|
||||||
|
if (EntityInfo.Columns.Where(it=>it.IsJson||it.IsTranscoding).Any(it => it.DbColumnName.EqualCase(key) || it.PropertyName.EqualCase(key)))
|
||||||
|
{
|
||||||
|
CheckTranscodeing();
|
||||||
|
}
|
||||||
|
|
||||||
UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(SqlBuilder.GetTranslationColumnName(key), expResult));
|
UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(SqlBuilder.GetTranslationColumnName(key), expResult));
|
||||||
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull == false && IsPrimaryKey(it)) || UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList();
|
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull == false && IsPrimaryKey(it)) || UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList();
|
||||||
AppendSets();
|
AppendSets();
|
||||||
|
|||||||
@@ -283,7 +283,11 @@ namespace SqlSugar
|
|||||||
var typeName = tType.Name;
|
var typeName = tType.Name;
|
||||||
if (item.PropertyType.IsClass())
|
if (item.PropertyType.IsClass())
|
||||||
{
|
{
|
||||||
if (IsJsonItem(readerValues, name))
|
if (item.PropertyType.FullName == "Newtonsoft.Json.Linq.JObject")
|
||||||
|
{
|
||||||
|
result.Add(name, DeserializeObject<dynamic>(readerValues[item.Name].ToString()));
|
||||||
|
}
|
||||||
|
else if (IsJsonItem(readerValues, name))
|
||||||
{
|
{
|
||||||
result.Add(name, DeserializeObject<Dictionary<string, object>>(readerValues.First().Value.ObjToString()));
|
result.Add(name, DeserializeObject<Dictionary<string, object>>(readerValues.First().Value.ObjToString()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ namespace SqlSugar
|
|||||||
void InitMappingInfo<T>();
|
void InitMappingInfo<T>();
|
||||||
void Open();
|
void Open();
|
||||||
void Close();
|
void Close();
|
||||||
|
ITenant AsTenant();
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Insertable
|
#region Insertable
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ namespace SqlSugar
|
|||||||
csharpTypeName = "long";
|
csharpTypeName = "long";
|
||||||
if (csharpTypeName == "Boolean")
|
if (csharpTypeName == "Boolean")
|
||||||
csharpTypeName = "bool";
|
csharpTypeName = "bool";
|
||||||
|
if (csharpTypeName == "SByte")
|
||||||
|
csharpTypeName = "Byte";
|
||||||
var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase));
|
var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase));
|
||||||
return mappings.HasValue() ? mappings.First().Key : "varchar";
|
return mappings.HasValue() ? mappings.First().Key : "varchar";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace SqlSugar
|
|||||||
var count = Ado.ExecuteCommand(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
|
var count = Ado.ExecuteCommand(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
|
||||||
var result = (this.GetIdentityKeys().IsNullOrEmpty() || count == 0) ? 0 : GetSeqValue(GetSeqName()).ObjToInt();
|
var result = (this.GetIdentityKeys().IsNullOrEmpty() || count == 0) ? 0 : GetSeqValue(GetSeqName()).ObjToInt();
|
||||||
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
|
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
|
||||||
|
After(sql,result);
|
||||||
AutoEnd(oldIsAuto);
|
AutoEnd(oldIsAuto);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -52,7 +52,7 @@ namespace SqlSugar
|
|||||||
var count = Ado.ExecuteCommand(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
|
var count = Ado.ExecuteCommand(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
|
||||||
var result = (this.GetIdentityKeys().IsNullOrEmpty() || count == 0) ? 0 : Convert.ToInt64(GetSeqValue(GetSeqName()));
|
var result = (this.GetIdentityKeys().IsNullOrEmpty() || count == 0) ? 0 : Convert.ToInt64(GetSeqValue(GetSeqName()));
|
||||||
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
|
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
|
||||||
|
After(sql, result);
|
||||||
AutoEnd(oldIsAuto);
|
AutoEnd(oldIsAuto);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -70,7 +70,7 @@ namespace SqlSugar
|
|||||||
var count = await Ado.ExecuteCommandAsync(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
|
var count = await Ado.ExecuteCommandAsync(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
|
||||||
var result = (this.GetIdentityKeys().IsNullOrEmpty() || count == 0) ? 0 : GetSeqValue(GetSeqName()).ObjToInt();
|
var result = (this.GetIdentityKeys().IsNullOrEmpty() || count == 0) ? 0 : GetSeqValue(GetSeqName()).ObjToInt();
|
||||||
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
|
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
|
||||||
|
After(sql, result);
|
||||||
AutoEnd(oldIsAuto);
|
AutoEnd(oldIsAuto);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -88,7 +88,7 @@ namespace SqlSugar
|
|||||||
var count = await Ado.ExecuteCommandAsync(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
|
var count = await Ado.ExecuteCommandAsync(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray());
|
||||||
var result = (this.GetIdentityKeys().IsNullOrEmpty() || count == 0) ? 0 : Convert.ToInt64(GetSeqValue(GetSeqName()));
|
var result = (this.GetIdentityKeys().IsNullOrEmpty() || count == 0) ? 0 : Convert.ToInt64(GetSeqValue(GetSeqName()));
|
||||||
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
|
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
|
||||||
|
After(sql, result);
|
||||||
AutoEnd(oldIsAuto);
|
AutoEnd(oldIsAuto);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,15 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
return base.GetDbColumnName(entityName,propertyName).ToUpper();
|
return base.GetDbColumnName(entityName,propertyName).ToUpper();
|
||||||
}
|
}
|
||||||
|
public override bool IsTranslationText(string name)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(name) && name.ToLower() == "sysdate")
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
var result = name.IsContainsIn(SqlTranslationLeft, SqlTranslationRight, UtilConstants.Space, ExpressionConst.LeftParenthesis, ExpressionConst.RightParenthesis);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public partial class OracleMethod : DefaultDbMethod, IDbMethods
|
public partial class OracleMethod : DefaultDbMethod, IDbMethods
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -576,6 +576,11 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region TenantManager
|
#region TenantManager
|
||||||
|
public ITenant AsTenant()
|
||||||
|
{
|
||||||
|
var tenant= this as ITenant;
|
||||||
|
return tenant;
|
||||||
|
}
|
||||||
public SqlSguarTransaction UseTran()
|
public SqlSguarTransaction UseTran()
|
||||||
{
|
{
|
||||||
return new SqlSguarTransaction(this);
|
return new SqlSguarTransaction(this);
|
||||||
|
|||||||
@@ -65,6 +65,10 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public SugarCacheProvider DataCache => ScopedContext.DataCache;
|
public SugarCacheProvider DataCache => ScopedContext.DataCache;
|
||||||
|
|
||||||
|
public ITenant AsTenant()
|
||||||
|
{
|
||||||
|
return ScopedContext.AsTenant();
|
||||||
|
}
|
||||||
public void AddConnection(ConnectionConfig connection)
|
public void AddConnection(ConnectionConfig connection)
|
||||||
{
|
{
|
||||||
ScopedContext.AddConnection(connection);
|
ScopedContext.AddConnection(connection);
|
||||||
|
|||||||
@@ -55,7 +55,17 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return errorValue;
|
return errorValue;
|
||||||
}
|
}
|
||||||
|
public static bool EqualCase(this string thisValue,string equalValue)
|
||||||
|
{
|
||||||
|
if ( thisValue!=null && equalValue != null)
|
||||||
|
{
|
||||||
|
return thisValue.ToLower() == equalValue.ToLower();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return thisValue == equalValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
public static string ObjToString(this object thisValue)
|
public static string ObjToString(this object thisValue)
|
||||||
{
|
{
|
||||||
if (thisValue != null) return thisValue.ToString().Trim();
|
if (thisValue != null) return thisValue.ToString().Trim();
|
||||||
|
|||||||
Reference in New Issue
Block a user