From aacc05ecb77e21410376577ec1e966392c0b261d Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Thu, 8 Oct 2020 17:10:28 +0800 Subject: [PATCH] Update Core --- .../Abstract/DbBindProvider/DbBindProvider.cs | 7 +++++-- .../InsertableProvider/InsertableProvider.cs | 8 ++++++++ .../Abstract/SqlBuilderProvider/InsertBuilder.cs | 7 ++++++- .../SqlSeverTest/SqlSugar/Entities/DbColumnInfo.cs | 1 + .../ExpressionsToSql/Common/SugarParameter.cs | 1 + .../Oracle/Insertable/OracleInsertable.cs | 8 ++++---- .../Realization/PostgreSQL/PostgreSQLProvider.cs | 5 +++++ .../SqlBuilder/PostgreSQLQueryBuilder.cs | 2 +- .../SqlServer/CodeFirst/SqlServerCodeFirst.cs | 14 ++++++++++++++ 9 files changed, 45 insertions(+), 8 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs index daa55f806..05049c5d8 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/DbBindProvider.cs @@ -29,8 +29,11 @@ namespace SqlSugar csharpTypeName = "long"; if (csharpTypeName.ToLower().IsIn("boolean", "bool")) csharpTypeName = "bool"; - var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase)); - return mappings.HasValue() ? mappings.First().Key : "varchar"; + var mappings = this.MappingTypes.Where(it => it.Value.ToString().Equals(csharpTypeName, StringComparison.CurrentCultureIgnoreCase)).ToList(); + if (mappings!=null&&mappings.Count>0) + return mappings.First().Key; + else + return "varchar"; } public string GetCsharpTypeName(string dbTypeName) { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index 02f8d88bc..a79e807fb 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -339,6 +339,10 @@ namespace SqlSugar { continue; } + if (item.IsJson) + { + paramters.IsJson = true; + } this.InsertBuilder.Parameters.Add(paramters); } } @@ -399,6 +403,10 @@ namespace SqlSugar PropertyType = UtilMethods.GetUnderType(column.PropertyInfo), TableId = i }; + if (column.IsJson) + { + columnInfo.IsJson = true; + } if (columnInfo.PropertyType.IsEnum()) { columnInfo.Value = Convert.ToInt64(columnInfo.Value); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs index fb3a0386c..dd65f369c 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs @@ -162,7 +162,12 @@ namespace SqlSugar pageIndex++; batchInsetrSql.Append("\r\n;\r\n"); } - return batchInsetrSql.ToString(); + var result= batchInsetrSql.ToString(); + if (this.Context.CurrentConnectionConfig.DbType == DbType.SqlServer) + { + result += "select @@identity;"; + } + return result; } } public virtual object FormatValue(object value) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DbColumnInfo.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DbColumnInfo.cs index 3fbd9d3e9..4942d7aa3 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DbColumnInfo.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DbColumnInfo.cs @@ -21,5 +21,6 @@ namespace SqlSugar public object Value { get; set; } public int DecimalDigits { get; set; } public int Scale { get; set; } + internal bool IsJson { get; set; } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs index 97cc59673..a04918247 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs @@ -233,5 +233,6 @@ namespace SqlSugar public string TypeName { get; set; } + public bool IsJson { get; set; } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/Insertable/OracleInsertable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/Insertable/OracleInsertable.cs index 865923a69..23ed81bee 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/Insertable/OracleInsertable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/Oracle/Insertable/OracleInsertable.cs @@ -43,7 +43,7 @@ namespace SqlSugar var isDisableMasterSlaveSeparation = this.Context.Ado.IsDisableMasterSlaveSeparation; this.Context.Ado.IsDisableMasterSlaveSeparation = true; 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; return result; } @@ -65,15 +65,15 @@ namespace SqlSugar int seqBeginValue = 0; seqBeginValue = this.Ado.GetInt("select " + seqName + ".Nextval from dual"); //Console.WriteLine(seqBeginValue); - var nextLength = insertCount - 1; + var nextLength= insertCount - 1; if (nextLength > 0) { StringBuilder sb = new StringBuilder(); - sb.AppendLine(" select " + seqName + ".nextval,t.* from ("); + sb.AppendLine(" select "+ seqName + ".nextval,t.* from ("); for (int i = 0; i < nextLength; i++) { sb.AppendLine(" select 1 from dual"); - if (i < (nextLength - 1)) + if (i<(nextLength - 1) ) { sb.AppendLine("union all"); } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs index db992ca30..3835762db 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Npgsql; +using NpgsqlTypes; namespace SqlSugar { @@ -94,6 +95,10 @@ namespace SqlSugar sqlParameter.Value = parameter.Value; sqlParameter.DbType = parameter.DbType; sqlParameter.Direction = parameter.Direction; + if (parameter.IsJson) + { + sqlParameter.NpgsqlDbType = NpgsqlDbType.Json; + } if (sqlParameter.Direction == 0) { sqlParameter.Direction = ParameterDirection.Input; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs index 5f4b4674c..22231800e 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs @@ -31,7 +31,7 @@ namespace SqlSugar #region Common Methods public override bool IsComplexModel(string sql) { - return Regex.IsMatch(sql, @"AS \w+\.\w+"); + return Regex.IsMatch(sql, @"AS ""\w+\.\w+"""); } public override string ToSqlString() { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/SqlServer/CodeFirst/SqlServerCodeFirst.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/SqlServer/CodeFirst/SqlServerCodeFirst.cs index 814ef1b3c..79cfdbba8 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/SqlServer/CodeFirst/SqlServerCodeFirst.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/SqlServer/CodeFirst/SqlServerCodeFirst.cs @@ -7,5 +7,19 @@ namespace SqlSugar { public class SqlServerCodeFirst:CodeFirstProvider { + protected override string GetTableName(EntityInfo entityInfo) + { + var table= this.Context.EntityMaintenance.GetTableName(entityInfo.EntityName); + var tableArray = table.Split('.'); + var noFormat = table.Split(']').Length==1; + if (tableArray.Length > 1 && noFormat) + { + return tableArray.Last(); + } + else + { + return table; + } + } } }