Update Core

This commit is contained in:
sunkaixuna 2021-12-08 20:59:44 +08:00
parent 01e2c9e34c
commit b5886c50cc
16 changed files with 62 additions and 17 deletions

View File

@ -28,6 +28,8 @@ namespace SqlSugar
csharpTypeName = "long";
if (csharpTypeName.ToLower().IsIn("boolean", "bool"))
csharpTypeName = "bool";
if (csharpTypeName == "DateTimeOffset")
csharpTypeName = "DateTime";
var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase)).ToList();
if (mappings!=null&&mappings.Count>0)
return mappings.First().Key;

View File

@ -2597,6 +2597,7 @@ namespace SqlSugar
asyncQueryableBuilder.DisableTop = this.QueryBuilder.DisableTop;
asyncQueryableBuilder.Offset = this.QueryBuilder.Offset;
asyncQueryableBuilder.IsSqlQuery = this.QueryBuilder.IsSqlQuery;
asyncQueryableBuilder.OldSql = this.QueryBuilder.OldSql;
}
protected int SetCacheTime(int cacheDurationInSeconds)
{

View File

@ -206,6 +206,11 @@ namespace SqlSugar
{
return "N'" + value.ToString().ToSqlFilter() + "'";
}
else if (type == UtilConstants.DateTimeOffsetType)
{
var date = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value);
return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'";
}
else if (type == UtilConstants.FloatType)
{
return "N'" +Convert.ToDouble(value).ToString() + "'";

View File

@ -45,7 +45,7 @@ namespace SqlSugar
public object SelectValue { get; set; }
public string SelectCacheKey { get; set; }
public string EntityName { get; set; }
public string OldSql { get; set; }
public Type EntityType { get; set; }
public Type ResultType { get; set; }
@ -491,21 +491,14 @@ namespace SqlSugar
}
public string GetSqlQuerySql(string result)
{
if (this.IsSqlQuery && (Skip == null && Take == null)&&(this.WhereInfos==null||this.WhereInfos.Count==0))
if (this.IsSqlQuery&&this.OldSql.HasValue() && (Skip == null && Take == null) && (this.WhereInfos == null || this.WhereInfos.Count == 0))
{
var old = result;
var regex = @"^SELECT .* FROM \(((.|\n|\r)*)\) t $";
if (this.Context.CurrentConnectionConfig.DbType .IsIn( DbType.MySql,DbType.PostgreSQL,DbType.Sqlite))
{
result = result.Substring(0,result.Length-1);
}
result = System.Text.RegularExpressions.Regex.Match(result,regex).Groups[1].Value;
if (string.IsNullOrEmpty(result))
{
result = old;
}
return this.OldSql;
}
else
{
return result;
}
return result;
}
#endregion

View File

@ -310,6 +310,11 @@ namespace SqlSugar
{
return value.ObjToBool() ? "1" : "0";
}
else if (type == UtilConstants.DateTimeOffsetType)
{
var date = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value);
return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'";
}
else if (type == UtilConstants.StringType || type == UtilConstants.ObjType)
{
return "N'" + value.ToString().ToSqlFilter() + "'";

View File

@ -588,6 +588,7 @@ namespace SqlSugar
var sqlBuilder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig);
var result= this.Context.Queryable<T>().AS(sqlBuilder.GetPackTable(sql, sqlBuilder.GetDefaultShortName())).With(SqlWith.Null).Select(sqlBuilder.GetDefaultShortName() + ".*");
result.QueryBuilder.IsSqlQuery = true;
result.QueryBuilder.OldSql = sql;
return result;
}
#endregion

View File

@ -878,7 +878,7 @@ namespace SqlSugar
public string GeDateFormat(string formatString, string value)
{
if (IsOracle())
if (IsOracle()||IsPg())
{
return $"to_char({value},'{formatString}') ";
}

View File

@ -18,6 +18,8 @@ namespace SqlSugar
csharpTypeName = "long";
if (csharpTypeName.ToLower().IsIn("boolean", "bool"))
csharpTypeName = "bool";
if (csharpTypeName == "DateTimeOffset")
csharpTypeName = "DateTime";
var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase));
return mappings.HasValue() ? mappings.First().Key : "varchar";
}

View File

@ -22,6 +22,8 @@ namespace SqlSugar
csharpTypeName = "bool";
if (csharpTypeName == "SByte")
csharpTypeName = "Byte";
if (csharpTypeName == "DateTimeOffset")
csharpTypeName = "DateTime";
var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase));
return mappings.HasValue() ? mappings.First().Key : "varchar";
}

View File

@ -117,6 +117,11 @@ namespace SqlSugar
{
sqlParameter.DbType = System.Data.DbType.AnsiString;
}
else if (parameter.DbType== System.Data.DbType.DateTimeOffset)
{
sqlParameter.Value = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)sqlParameter.Value);
sqlParameter.DbType = System.Data.DbType.DateTime;
}
++index;
}
return result;

View File

@ -20,6 +20,8 @@ namespace SqlSugar
csharpTypeName = "bool";
if (csharpTypeName == "Guid")
csharpTypeName = "string";
if (csharpTypeName == "DateTimeOffset")
csharpTypeName = "DateTime";
var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase));
return mappings.HasValue() ? mappings.First().Key : "varchar";
}

View File

@ -143,6 +143,11 @@ namespace SqlSugar
sqlParameter.DbType = System.Data.DbType.String;
sqlParameter.Value = sqlParameter.Value.ObjToString();
}
else if (parameter.DbType == System.Data.DbType.DateTimeOffset)
{
sqlParameter.Value = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)parameter.Value);
sqlParameter.DbType = System.Data.DbType.DateTime;
}
else if (parameter.DbType == System.Data.DbType.Boolean)
{
sqlParameter.DbType = System.Data.DbType.Int16;

View File

@ -134,14 +134,19 @@ namespace SqlSugar
else if (type == UtilConstants.BoolType)
{
return value.ObjToBool() ? "1" : "0";
}
else if (type==UtilConstants.DateTimeOffsetType)
{
var date= UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value);
return "to_date('" + date.ToString("yyyy-MM-dd HH:mm:ss") + "', 'YYYY-MM-DD HH24:MI:SS') ";
}
else if (type == UtilConstants.StringType || type == UtilConstants.ObjType)
{
return N+"'" + value.ToString().ToSqlFilter() + "'";
return N + "'" + value.ToString().ToSqlFilter() + "'";
}
else
{
return N+"'" + value.ToString() + "'";
return N + "'" + value.ToString() + "'";
}
}
}

View File

@ -76,6 +76,11 @@ namespace SqlSugar
{
return value.ObjToBool() ? "1" : "0";
}
else if (type == UtilConstants.DateTimeOffsetType)
{
var date = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value);
return "to_date('" + date.ToString("yyyy-MM-dd HH:mm:ss") + "', 'YYYY-MM-DD HH24:MI:SS') ";
}
else if (type == UtilConstants.StringType || type == UtilConstants.ObjType)
{
return N + "'" + value.ToString().ToSqlFilter() + "'";

View File

@ -20,6 +20,8 @@ namespace SqlSugar
csharpTypeName = "long";
if (csharpTypeName == "Boolean")
csharpTypeName = "bool";
if (csharpTypeName == "DateTimeOffset")
csharpTypeName = "DateTime";
var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase));
return mappings.HasValue() ? mappings.First().Key : "varchar";
}

View File

@ -17,6 +17,16 @@ namespace SqlSugar
public class UtilMethods
{
internal static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime)
{
if (dateTime.Offset.Equals(TimeSpan.Zero))
return dateTime.UtcDateTime;
else if (dateTime.Offset.Equals(TimeZoneInfo.Local.GetUtcOffset(dateTime.DateTime)))
return DateTime.SpecifyKind(dateTime.DateTime, DateTimeKind.Local);
else
return dateTime.DateTime;
}
internal static object To(object value, Type destinationType)
{
return To(value, destinationType, CultureInfo.InvariantCulture);