mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-09-21 02:58:05 +08:00
Synchronization code
This commit is contained in:
@@ -160,7 +160,12 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
else
|
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");
|
Check.Exception(SugarCompatible.IsFramework, "TDengine only support .net core");
|
||||||
InstanceFactory.CustomDllName = SugarCompatible.IsFramework ? "SqlSugar.TDengine" : "SqlSugar.TDengineCore";
|
InstanceFactory.CustomDllName = SugarCompatible.IsFramework ? "SqlSugar.TDengine" : "SqlSugar.TDengineCore";
|
||||||
break;
|
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:
|
default:
|
||||||
throw new Exception("ConnectionConfig.DbType is null");
|
throw new Exception("ConnectionConfig.DbType is null");
|
||||||
}
|
}
|
||||||
|
@@ -13,6 +13,21 @@ namespace SqlSugar
|
|||||||
internal MethodInfo MethodInfo { get; set; }
|
internal MethodInfo MethodInfo { get; set; }
|
||||||
internal object objectValue { 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()
|
public int ExecuteCommand()
|
||||||
{
|
{
|
||||||
if (Context == null) return 0;
|
if (Context == null) return 0;
|
||||||
|
@@ -39,6 +39,7 @@ namespace SqlSugar
|
|||||||
var SqlBuilder = UpdateBuilder.Builder;
|
var SqlBuilder = UpdateBuilder.Builder;
|
||||||
foreach (var item in items)
|
foreach (var item in items)
|
||||||
{
|
{
|
||||||
|
updateableObj.UpdateBuilder.LambdaExpressions.IsSingle = false;
|
||||||
var dbColumnName = updateableObj.UpdateBuilder.Context.EntityMaintenance.GetDbColumnName<T>(item.Key);
|
var dbColumnName = updateableObj.UpdateBuilder.Context.EntityMaintenance.GetDbColumnName<T>(item.Key);
|
||||||
var value = updateableObj.UpdateBuilder.GetExpressionValue(ExpressionTool.RemoveConvert(item.Value), ResolveExpressType.WhereMultiple).GetString();
|
var value = updateableObj.UpdateBuilder.GetExpressionValue(ExpressionTool.RemoveConvert(item.Value), ResolveExpressType.WhereMultiple).GetString();
|
||||||
this.updateableObj.UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(dbColumnName, value));
|
this.updateableObj.UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(dbColumnName, value));
|
||||||
|
@@ -28,6 +28,7 @@ namespace SqlSugar
|
|||||||
var SqlBuilder = UpdateBuilder.Builder;
|
var SqlBuilder = UpdateBuilder.Builder;
|
||||||
foreach (var item in items)
|
foreach (var item in items)
|
||||||
{
|
{
|
||||||
|
updateableObj.UpdateBuilder.LambdaExpressions.IsSingle = false;
|
||||||
var dbColumnName = updateableObj.UpdateBuilder.Context.EntityMaintenance.GetDbColumnName<T>(item.Key);
|
var dbColumnName = updateableObj.UpdateBuilder.Context.EntityMaintenance.GetDbColumnName<T>(item.Key);
|
||||||
var value = updateableObj.UpdateBuilder.GetExpressionValue(ExpressionTool.RemoveConvert(item.Value), ResolveExpressType.WhereMultiple).GetString();
|
var value = updateableObj.UpdateBuilder.GetExpressionValue(ExpressionTool.RemoveConvert(item.Value), ResolveExpressType.WhereMultiple).GetString();
|
||||||
this.updateableObj.UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(dbColumnName, value));
|
this.updateableObj.UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(dbColumnName, value));
|
||||||
|
@@ -31,6 +31,8 @@ namespace SqlSugar
|
|||||||
Vastbase,
|
Vastbase,
|
||||||
PolarDB,
|
PolarDB,
|
||||||
Doris,
|
Doris,
|
||||||
|
Xugu,
|
||||||
|
GoldenDB,
|
||||||
Custom =900
|
Custom =900
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -786,7 +786,19 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
string fieldName = expression.Member.Name;
|
string fieldName = expression.Member.Name;
|
||||||
fieldName = this.Context.GetDbColumnName(expression.Expression.Type.Name, fieldName);
|
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);
|
fieldName = Context.GetTranslationColumnName(fieldName);
|
||||||
|
if (isSpace)
|
||||||
|
{
|
||||||
|
fieldName = fieldName.Replace(guid, UtilConstants.Space);
|
||||||
|
}
|
||||||
return fieldName;
|
return fieldName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -749,6 +749,7 @@ namespace SqlSugar
|
|||||||
return dsResult;
|
return dsResult;
|
||||||
}
|
}
|
||||||
case "DateAdd":
|
case "DateAdd":
|
||||||
|
model.Conext = this.Context;
|
||||||
if (model.Args.Count == 2)
|
if (model.Args.Count == 2)
|
||||||
return this.Context.DbMehtods.DateAddDay(model);
|
return this.Context.DbMehtods.DateAddDay(model);
|
||||||
else
|
else
|
||||||
@@ -808,6 +809,7 @@ namespace SqlSugar
|
|||||||
MemberValue= "100000",
|
MemberValue= "100000",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
model.Conext = this.Context;
|
||||||
return this.Context.DbMehtods.Substring(model);
|
return this.Context.DbMehtods.Substring(model);
|
||||||
case "Replace":
|
case "Replace":
|
||||||
return this.Context.DbMehtods.Replace(model);
|
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);
|
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)
|
public override string DateValue(MethodCallExpressionModel model)
|
||||||
{
|
{
|
||||||
var parameter = model.Args[0];
|
var parameter = model.Args[0];
|
||||||
@@ -295,6 +303,10 @@ namespace SqlSugar
|
|||||||
var parameter = model.Args[0];
|
var parameter = model.Args[0];
|
||||||
var parameter2 = model.Args[1];
|
var parameter2 = model.Args[1];
|
||||||
var parameter3 = model.Args[2];
|
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);
|
return string.Format(" ({1} + ({2}||'{0}')::INTERVAL) ", parameter3.MemberValue, parameter.MemberName, parameter2.MemberName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -123,10 +123,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
value = DBNull.Value;
|
value = DBNull.Value;
|
||||||
}
|
}
|
||||||
else if (value is double&&this.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel==null)
|
//else if (value is double&&this.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel==null)
|
||||||
{
|
//{
|
||||||
column.Type = NpgsqlDbType.Double;
|
// column.Type = NpgsqlDbType.Double;
|
||||||
}
|
//}
|
||||||
if (column.Type == null)
|
if (column.Type == null)
|
||||||
{
|
{
|
||||||
writer.Write(value);
|
writer.Write(value);
|
||||||
|
@@ -237,6 +237,10 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
protected override string GetJoinUpdate(string columnsString, ref string whereString)
|
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 formString = $" {Builder.GetTranslationColumnName(this.TableName)} AS {Builder.GetTranslationColumnName(this.ShortName)} ";
|
||||||
var joinString = "";
|
var joinString = "";
|
||||||
foreach (var item in this.JoinInfos)
|
foreach (var item in this.JoinInfos)
|
||||||
@@ -248,6 +252,22 @@ namespace SqlSugar
|
|||||||
columnsString = columnsString.Replace(Builder.GetTranslationColumnName(this.ShortName)+".","")+joinString;
|
columnsString = columnsString.Replace(Builder.GetTranslationColumnName(this.ShortName)+".","")+joinString;
|
||||||
return string.Format(SqlTemplate, tableName, columnsString, whereString);
|
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)
|
public override string FormatDateTimeOffset(object value)
|
||||||
{
|
{
|
||||||
return "'" + ((DateTimeOffset)value).ToString("o") + "'";
|
return "'" + ((DateTimeOffset)value).ToString("o") + "'";
|
||||||
|
Reference in New Issue
Block a user