diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs index 81afc0085..8b05bba33 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs @@ -363,6 +363,10 @@ namespace SqlSugar { return sql; } + public virtual Type GetNullType(string tableName,string columnName) + { + return null; + } private void BuilderTree(StringBuilder builder,ConditionalTree item,ref int indexTree, List parameters,ref int mainIndex) { var conditionals = ToConditionalCollections(item,ref indexTree, parameters); diff --git a/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs b/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs index 50c4f249b..37642f870 100644 --- a/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Interface/ISqlBuilder.cs @@ -42,5 +42,6 @@ namespace SqlSugar void RepairReplicationParameters(ref string appendSql, SugarParameter[] parameters, int addIndex); KeyValuePair ConditionalModelToSql(List models, int beginIndex = 0); string GetUnionFomatSql(string sql); + Type GetNullType(string tableName,string columnName); } } diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLBuilder.cs index fef7d4b78..53f8dd2eb 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLBuilder.cs @@ -102,5 +102,21 @@ namespace SqlSugar { return " ( " + sql + " ) "; } + + public override Type GetNullType(string tableName, string columnName) + { + var columnInfo=this.Context.DbMaintenance.GetColumnInfosByTableName(tableName).FirstOrDefault(z => z.DbColumnName.EqualCase(columnName)); + if (columnInfo != null) + { + var cTypeName=this.Context.Ado.DbBind.GetCsharpTypeName(UtilConstants.StringType.Name); + var value=UtilMethods.ConvertDataByTypeName(cTypeName, ""); + if (value != null) + { + var key = "GetNullType_" + tableName + columnName; + return new ReflectionInoCacheService().GetOrCreate(key, () => value.GetType()); + } + } + return null; + } } }