mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-20 02:29:39 +08:00
Synchronization code
This commit is contained in:
@@ -160,7 +160,12 @@ namespace SqlSugar
|
||||
}
|
||||
else
|
||||
{
|
||||
item.PropertyInfo.SetValue(parentObj, dataReader.GetValue(itemIndex));
|
||||
var setValue = dataReader.GetValue(itemIndex);
|
||||
if (setValue == DBNull.Value)
|
||||
{
|
||||
setValue = null;
|
||||
}
|
||||
item.PropertyInfo.SetValue(parentObj, setValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -528,6 +528,15 @@ namespace SqlSugar
|
||||
Check.Exception(SugarCompatible.IsFramework, "TDengine only support .net core");
|
||||
InstanceFactory.CustomDllName = SugarCompatible.IsFramework ? "SqlSugar.TDengine" : "SqlSugar.TDengineCore";
|
||||
break;
|
||||
case DbType.Xugu:
|
||||
Check.Exception(SugarCompatible.IsFramework, "Xugu only support .net core");
|
||||
//InstanceFactory.CustomDbName = "Xugu";
|
||||
InstanceFactory.CustomDllName = "SqlSugar.XuguCore";
|
||||
//InstanceFactory.CustomNamespace = "SqlSugar.Xugu";
|
||||
break;
|
||||
case DbType.GoldenDB:
|
||||
config.DbType = DbType.MySql;
|
||||
break;
|
||||
default:
|
||||
throw new Exception("ConnectionConfig.DbType is null");
|
||||
}
|
||||
|
@@ -13,6 +13,21 @@ namespace SqlSugar
|
||||
internal MethodInfo MethodInfo { get; set; }
|
||||
internal object objectValue { get; set; }
|
||||
|
||||
public int ExecuteCommandWithOptLock(bool isThrowError = false)
|
||||
{
|
||||
if (Context == null) return 0;
|
||||
var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
|
||||
var result = inertable.GetType().GetMyMethod("ExecuteCommandWithOptLock",1,typeof(bool)).Invoke(inertable, new object[] { isThrowError });
|
||||
return (int)result;
|
||||
}
|
||||
|
||||
public async Task<int> ExecuteCommandWithOptLockAsync(bool isThrowError = false)
|
||||
{
|
||||
if (Context == null) return 0;
|
||||
var inertable = MethodInfo.Invoke(Context, new object[] { objectValue });
|
||||
var result = inertable.GetType().GetMyMethod("ExecuteCommandWithOptLockAsync", 1, typeof(bool)).Invoke(inertable, new object[] { isThrowError });
|
||||
return await(Task<int>)result;
|
||||
}
|
||||
public int ExecuteCommand()
|
||||
{
|
||||
if (Context == null) return 0;
|
||||
|
@@ -39,6 +39,7 @@ namespace SqlSugar
|
||||
var SqlBuilder = UpdateBuilder.Builder;
|
||||
foreach (var item in items)
|
||||
{
|
||||
updateableObj.UpdateBuilder.LambdaExpressions.IsSingle = false;
|
||||
var dbColumnName = updateableObj.UpdateBuilder.Context.EntityMaintenance.GetDbColumnName<T>(item.Key);
|
||||
var value = updateableObj.UpdateBuilder.GetExpressionValue(ExpressionTool.RemoveConvert(item.Value), ResolveExpressType.WhereMultiple).GetString();
|
||||
this.updateableObj.UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(dbColumnName, value));
|
||||
|
@@ -28,6 +28,7 @@ namespace SqlSugar
|
||||
var SqlBuilder = UpdateBuilder.Builder;
|
||||
foreach (var item in items)
|
||||
{
|
||||
updateableObj.UpdateBuilder.LambdaExpressions.IsSingle = false;
|
||||
var dbColumnName = updateableObj.UpdateBuilder.Context.EntityMaintenance.GetDbColumnName<T>(item.Key);
|
||||
var value = updateableObj.UpdateBuilder.GetExpressionValue(ExpressionTool.RemoveConvert(item.Value), ResolveExpressType.WhereMultiple).GetString();
|
||||
this.updateableObj.UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(dbColumnName, value));
|
||||
|
@@ -31,6 +31,8 @@ namespace SqlSugar
|
||||
Vastbase,
|
||||
PolarDB,
|
||||
Doris,
|
||||
Xugu,
|
||||
GoldenDB,
|
||||
Custom =900
|
||||
}
|
||||
}
|
||||
|
@@ -786,7 +786,19 @@ namespace SqlSugar
|
||||
{
|
||||
string fieldName = expression.Member.Name;
|
||||
fieldName = this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName);
|
||||
|
||||
var isSpace = fieldName.Contains(UtilConstants.Space);
|
||||
var guid = string.Empty;
|
||||
if (isSpace)
|
||||
{
|
||||
guid = SnowFlakeSingle.Instance.NextId().ToString();
|
||||
fieldName = fieldName.Replace(UtilConstants.Space, guid);
|
||||
}
|
||||
fieldName = Context.GetTranslationColumnName(fieldName);
|
||||
if (isSpace)
|
||||
{
|
||||
fieldName = fieldName.Replace(guid, UtilConstants.Space);
|
||||
}
|
||||
return fieldName;
|
||||
}
|
||||
|
||||
|
@@ -749,6 +749,7 @@ namespace SqlSugar
|
||||
return dsResult;
|
||||
}
|
||||
case "DateAdd":
|
||||
model.Conext = this.Context;
|
||||
if (model.Args.Count == 2)
|
||||
return this.Context.DbMehtods.DateAddDay(model);
|
||||
else
|
||||
@@ -808,6 +809,7 @@ namespace SqlSugar
|
||||
MemberValue= "100000",
|
||||
});
|
||||
}
|
||||
model.Conext = this.Context;
|
||||
return this.Context.DbMehtods.Substring(model);
|
||||
case "Replace":
|
||||
return this.Context.DbMehtods.Replace(model);
|
||||
|
@@ -167,6 +167,14 @@ namespace SqlSugar
|
||||
}
|
||||
return string.Format("( CASE WHEN {0} THEN {1} ELSE {2} END )", parameter.MemberName, parameter2.MemberName, parameter3.MemberName);
|
||||
}
|
||||
public override string Substring(MethodCallExpressionModel model)
|
||||
{
|
||||
if (model?.Conext?.SugarContext?.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel == DbType.MySql)
|
||||
{
|
||||
return base.Substring(model).Replace(" + ", " operator(pg_catalog.+) ");
|
||||
}
|
||||
return base.Substring(model);
|
||||
}
|
||||
public override string DateValue(MethodCallExpressionModel model)
|
||||
{
|
||||
var parameter = model.Args[0];
|
||||
@@ -295,6 +303,10 @@ namespace SqlSugar
|
||||
var parameter = model.Args[0];
|
||||
var parameter2 = model.Args[1];
|
||||
var parameter3 = model.Args[2];
|
||||
if (model?.Conext?.SugarContext?.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel == DbType.MySql)
|
||||
{
|
||||
return string.Format(" ({1} + ({2} operator(pg_catalog.||) '{0}')::INTERVAL) ", parameter3.MemberValue, parameter.MemberName, parameter2.MemberName);
|
||||
}
|
||||
return string.Format(" ({1} + ({2}||'{0}')::INTERVAL) ", parameter3.MemberValue, parameter.MemberName, parameter2.MemberName);
|
||||
}
|
||||
|
||||
|
@@ -123,10 +123,10 @@ namespace SqlSugar
|
||||
{
|
||||
value = DBNull.Value;
|
||||
}
|
||||
else if (value is double&&this.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel==null)
|
||||
{
|
||||
column.Type = NpgsqlDbType.Double;
|
||||
}
|
||||
//else if (value is double&&this.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel==null)
|
||||
//{
|
||||
// column.Type = NpgsqlDbType.Double;
|
||||
//}
|
||||
if (column.Type == null)
|
||||
{
|
||||
writer.Write(value);
|
||||
|
@@ -237,6 +237,10 @@ namespace SqlSugar
|
||||
}
|
||||
protected override string GetJoinUpdate(string columnsString, ref string whereString)
|
||||
{
|
||||
if (this.JoinInfos?.Count > 1)
|
||||
{
|
||||
return this.GetJoinUpdateMany(columnsString,whereString);
|
||||
}
|
||||
var formString = $" {Builder.GetTranslationColumnName(this.TableName)} AS {Builder.GetTranslationColumnName(this.ShortName)} ";
|
||||
var joinString = "";
|
||||
foreach (var item in this.JoinInfos)
|
||||
@@ -248,6 +252,22 @@ namespace SqlSugar
|
||||
columnsString = columnsString.Replace(Builder.GetTranslationColumnName(this.ShortName)+".","")+joinString;
|
||||
return string.Format(SqlTemplate, tableName, columnsString, whereString);
|
||||
}
|
||||
private string GetJoinUpdateMany(string columnsString,string where)
|
||||
{
|
||||
var formString = $" {Builder.GetTranslationColumnName(this.TableName)} AS {Builder.GetTranslationColumnName(this.ShortName)} ";
|
||||
var joinString = "";
|
||||
var i = 0;
|
||||
foreach (var item in this.JoinInfos)
|
||||
{
|
||||
var whereString = " ON " + item.JoinWhere;
|
||||
joinString += $"\r\n JOIN {Builder.GetTranslationColumnName(item.TableName)} {Builder.GetTranslationColumnName(item.ShortName)} ";
|
||||
joinString = joinString + whereString;
|
||||
i++;
|
||||
}
|
||||
var tableName = Builder.GetTranslationColumnName(this.TableName) + "\r\n ";
|
||||
columnsString = columnsString.Replace(Builder.GetTranslationColumnName(this.ShortName) + ".", "") + $" FROM {Builder.GetTranslationColumnName(this.TableName)} {Builder.GetTranslationColumnName(this.ShortName)}\r\n " + joinString;
|
||||
return string.Format(SqlTemplate, tableName, columnsString, where);
|
||||
}
|
||||
public override string FormatDateTimeOffset(object value)
|
||||
{
|
||||
return "'" + ((DateTimeOffset)value).ToString("o") + "'";
|
||||
|
Reference in New Issue
Block a user