mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2026-02-27 16:50:33 +08:00
PGSQLl Support Array
This commit is contained in:
@@ -1343,7 +1343,7 @@ namespace SqlSugar
|
|||||||
if (item.Value != null)
|
if (item.Value != null)
|
||||||
{
|
{
|
||||||
var type = item.Value.GetType();
|
var type = item.Value.GetType();
|
||||||
if ((type != UtilConstants.ByteArrayType && type.IsArray) || type.FullName.IsCollectionsList())
|
if ((type != UtilConstants.ByteArrayType && type.IsArray&&item.IsArray==false) || type.FullName.IsCollectionsList())
|
||||||
{
|
{
|
||||||
var newValues = new List<string>();
|
var newValues = new List<string>();
|
||||||
foreach (var inValute in item.Value as IEnumerable)
|
foreach (var inValute in item.Value as IEnumerable)
|
||||||
|
|||||||
@@ -194,6 +194,7 @@ namespace SqlSugar
|
|||||||
column.DefaultValue = sugarColumn.DefaultValue;
|
column.DefaultValue = sugarColumn.DefaultValue;
|
||||||
column.IndexGroupNameList = sugarColumn.IndexGroupNameList;
|
column.IndexGroupNameList = sugarColumn.IndexGroupNameList;
|
||||||
column.IsOnlyIgnoreUpdate = sugarColumn.IsOnlyIgnoreUpdate;
|
column.IsOnlyIgnoreUpdate = sugarColumn.IsOnlyIgnoreUpdate;
|
||||||
|
column.IsArray = sugarColumn.IsArray;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -343,6 +343,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
paramters.IsJson = true;
|
paramters.IsJson = true;
|
||||||
}
|
}
|
||||||
|
if (item.IsArray)
|
||||||
|
{
|
||||||
|
paramters.IsArray = true;
|
||||||
|
}
|
||||||
this.InsertBuilder.Parameters.Add(paramters);
|
this.InsertBuilder.Parameters.Add(paramters);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -407,6 +411,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
columnInfo.IsJson = true;
|
columnInfo.IsJson = true;
|
||||||
}
|
}
|
||||||
|
if (column.IsArray)
|
||||||
|
{
|
||||||
|
columnInfo.IsArray = true;
|
||||||
|
}
|
||||||
if (columnInfo.PropertyType.IsEnum())
|
if (columnInfo.PropertyType.IsEnum())
|
||||||
{
|
{
|
||||||
columnInfo.Value = Convert.ToInt64(columnInfo.Value);
|
columnInfo.Value = Convert.ToInt64(columnInfo.Value);
|
||||||
|
|||||||
@@ -491,6 +491,10 @@ namespace SqlSugar
|
|||||||
columnInfo.IsJson = true;
|
columnInfo.IsJson = true;
|
||||||
columnInfo.Value = this.Context.Utilities.SerializeObject(columnInfo.Value);
|
columnInfo.Value = this.Context.Utilities.SerializeObject(columnInfo.Value);
|
||||||
}
|
}
|
||||||
|
if (column.IsArray)
|
||||||
|
{
|
||||||
|
columnInfo.IsArray = true;
|
||||||
|
}
|
||||||
var tranColumn = EntityInfo.Columns.FirstOrDefault(it => it.IsTranscoding && it.DbColumnName.Equals(column.DbColumnName, StringComparison.CurrentCultureIgnoreCase));
|
var tranColumn = EntityInfo.Columns.FirstOrDefault(it => it.IsTranscoding && it.DbColumnName.Equals(column.DbColumnName, StringComparison.CurrentCultureIgnoreCase));
|
||||||
if (tranColumn != null && columnInfo.Value.HasValue())
|
if (tranColumn != null && columnInfo.Value.HasValue())
|
||||||
{
|
{
|
||||||
@@ -536,6 +540,10 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
parameter.IsJson = true;
|
parameter.IsJson = true;
|
||||||
}
|
}
|
||||||
|
if (item.IsArray)
|
||||||
|
{
|
||||||
|
parameter.IsArray = true;
|
||||||
|
}
|
||||||
this.UpdateBuilder.Parameters.Add(parameter);
|
this.UpdateBuilder.Parameters.Add(parameter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ namespace SqlSugar
|
|||||||
public object Value { get; set; }
|
public object Value { get; set; }
|
||||||
public int DecimalDigits { get; set; }
|
public int DecimalDigits { get; set; }
|
||||||
public int Scale { get; set; }
|
public int Scale { get; set; }
|
||||||
|
public bool IsArray { get; set; }
|
||||||
internal bool IsJson { get; set; }
|
internal bool IsJson { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,5 +33,6 @@ namespace SqlSugar
|
|||||||
public bool IsJson { get; set; }
|
public bool IsJson { get; set; }
|
||||||
public bool NoSerialize { get; set; }
|
public bool NoSerialize { get; set; }
|
||||||
public string[] IndexGroupNameList { get; set; }
|
public string[] IndexGroupNameList { get; set; }
|
||||||
|
public bool IsArray { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,6 +171,13 @@ namespace SqlSugar
|
|||||||
set { _IndexGroupNameList = value; }
|
set { _IndexGroupNameList = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool _IsArray;
|
||||||
|
public bool IsArray
|
||||||
|
{
|
||||||
|
get { return _IsArray; }
|
||||||
|
set { _IsArray = value; }
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -234,5 +234,6 @@ namespace SqlSugar
|
|||||||
|
|
||||||
public string TypeName { get; set; }
|
public string TypeName { get; set; }
|
||||||
public bool IsJson { get; set; }
|
public bool IsJson { get; set; }
|
||||||
|
public bool IsArray { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,6 +99,19 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
sqlParameter.NpgsqlDbType = NpgsqlDbType.Json;
|
sqlParameter.NpgsqlDbType = NpgsqlDbType.Json;
|
||||||
}
|
}
|
||||||
|
if (parameter.IsArray)
|
||||||
|
{
|
||||||
|
// sqlParameter.Value = this.Context.Utilities.SerializeObject(sqlParameter.Value);
|
||||||
|
var type = sqlParameter.Value.GetType();
|
||||||
|
if (ArrayMapping.ContainsKey(type))
|
||||||
|
{
|
||||||
|
sqlParameter.NpgsqlDbType = ArrayMapping[type] | NpgsqlDbType.Array;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Check.Exception(true, sqlParameter.Value.GetType().Name + " No Support");
|
||||||
|
}
|
||||||
|
}
|
||||||
if (sqlParameter.Direction == 0)
|
if (sqlParameter.Direction == 0)
|
||||||
{
|
{
|
||||||
sqlParameter.Direction = ParameterDirection.Input;
|
sqlParameter.Direction = ParameterDirection.Input;
|
||||||
@@ -114,5 +127,31 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static readonly Dictionary<Type, NpgsqlDbType> ArrayMapping = new Dictionary<Type, NpgsqlDbType>()
|
||||||
|
{
|
||||||
|
{ typeof(int[]),NpgsqlDbType.Integer},
|
||||||
|
{ typeof(short[]),NpgsqlDbType.Smallint},
|
||||||
|
{ typeof(long[]),NpgsqlDbType.Bigint},
|
||||||
|
{ typeof(decimal[]),NpgsqlDbType.Numeric},
|
||||||
|
{ typeof(char[]),NpgsqlDbType.Text},
|
||||||
|
{ typeof(byte[]),NpgsqlDbType.Bytea},
|
||||||
|
{ typeof(bool[]),NpgsqlDbType.Boolean},
|
||||||
|
{typeof(DateTime[]),NpgsqlDbType.Date},
|
||||||
|
|
||||||
|
|
||||||
|
{ typeof(int?[]),NpgsqlDbType.Integer},
|
||||||
|
{ typeof(short?[]),NpgsqlDbType.Smallint},
|
||||||
|
{ typeof(long?[]),NpgsqlDbType.Bigint},
|
||||||
|
{ typeof(decimal?[]),NpgsqlDbType.Numeric},
|
||||||
|
{ typeof(char?[]),NpgsqlDbType.Text},
|
||||||
|
{ typeof(byte?[]),NpgsqlDbType.Bytea},
|
||||||
|
{ typeof(bool?[]),NpgsqlDbType.Boolean},
|
||||||
|
{typeof(DateTime?[]),NpgsqlDbType.Date},
|
||||||
|
|
||||||
|
|
||||||
|
{ typeof(string[]), NpgsqlDbType.Text},
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user