Synchronization code

This commit is contained in:
sunkaixuan
2024-07-05 14:08:37 +08:00
parent 74d559ba9f
commit b97e5ce8b7
11 changed files with 84 additions and 5 deletions

View File

@@ -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);
}
}
}

View File

@@ -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");
}

View File

@@ -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;

View File

@@ -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));

View File

@@ -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));

View File

@@ -31,6 +31,8 @@ namespace SqlSugar
Vastbase,
PolarDB,
Doris,
Xugu,
GoldenDB,
Custom =900
}
}

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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") + "'";