mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-20 00:44:19 +08:00
feat: 增加对PGSQL10及以上主键 IDENTITY 类型的支持,保持对默认实现 Serial 类型的兼容处理。
fix: 删除导航批量查询的bug
This commit is contained in:
parent
32d83ec599
commit
b099fa6dbc
@ -200,7 +200,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
foreach (var item in insertData)
|
foreach (var item in insertData)
|
||||||
{
|
{
|
||||||
this._Context.Insertable(insertData).ExecuteCommandIdentityIntoEntity();
|
this._Context.Insertable(item).ExecuteCommandIdentityIntoEntity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using SqlSugar.Realization.PostgreSQL;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -39,5 +40,6 @@ namespace SqlSugar
|
|||||||
public DbType? DatabaseModel { get;set; }
|
public DbType? DatabaseModel { get;set; }
|
||||||
public bool ClickHouseEnableFinal { get; set; }
|
public bool ClickHouseEnableFinal { get; set; }
|
||||||
public bool EnableJsonb { get; set; }
|
public bool EnableJsonb { get; set; }
|
||||||
|
public PostgresIdentityStrategy PostgresIdentityStrategy { get; set; } = PostgresIdentityStrategy.Serial; // 兼容性处理,默认使用Serial
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -485,6 +485,7 @@ WHERE tgrelid = '"+tableName+"'::regclass");
|
|||||||
{
|
{
|
||||||
List<string> columnArray = new List<string>();
|
List<string> columnArray = new List<string>();
|
||||||
Check.Exception(columns.IsNullOrEmpty(), "No columns found ");
|
Check.Exception(columns.IsNullOrEmpty(), "No columns found ");
|
||||||
|
var identityStrategy = this.Context.CurrentConnectionConfig.MoreSettings?.PostgresIdentityStrategy;
|
||||||
foreach (var item in columns)
|
foreach (var item in columns)
|
||||||
{
|
{
|
||||||
string columnName = item.DbColumnName;
|
string columnName = item.DbColumnName;
|
||||||
@ -508,17 +509,26 @@ WHERE tgrelid = '"+tableName+"'::regclass");
|
|||||||
string addItem = string.Format(this.CreateTableColumn, this.SqlBuilder.GetTranslationColumnName(columnName.ToLower(isAutoToLowerCodeFirst)), dataType, dataSize, nullType, primaryKey, "");
|
string addItem = string.Format(this.CreateTableColumn, this.SqlBuilder.GetTranslationColumnName(columnName.ToLower(isAutoToLowerCodeFirst)), dataType, dataSize, nullType, primaryKey, "");
|
||||||
if (item.IsIdentity)
|
if (item.IsIdentity)
|
||||||
{
|
{
|
||||||
if (dataType?.ToLower() == "int")
|
if(identityStrategy == Realization.PostgreSQL.PostgresIdentityStrategy.Serial)
|
||||||
{
|
{
|
||||||
dataSize = "int4";
|
if (dataType?.ToLower() == "int")
|
||||||
|
{
|
||||||
|
dataSize = "int4";
|
||||||
|
}
|
||||||
|
else if (dataType?.ToLower() == "long")
|
||||||
|
{
|
||||||
|
dataSize = "int8";
|
||||||
|
}
|
||||||
|
string length = dataType.Substring(dataType.Length - 1);
|
||||||
|
string identityDataType = "serial" + length;
|
||||||
|
addItem = addItem.Replace(dataType, identityDataType);
|
||||||
}
|
}
|
||||||
else if (dataType?.ToLower() == "long")
|
else if (identityStrategy == Realization.PostgreSQL.PostgresIdentityStrategy.Identity)
|
||||||
{
|
{
|
||||||
dataSize = "int8";
|
string length = dataType.Substring(dataType.Length - 1);
|
||||||
|
string identityDataType = "INT" + length + " GENERATED BY DEFAULT AS IDENTITY";
|
||||||
|
addItem = addItem.Replace(dataType, identityDataType);
|
||||||
}
|
}
|
||||||
string length = dataType.Substring(dataType.Length - 1);
|
|
||||||
string identityDataType = "serial" + length;
|
|
||||||
addItem = addItem.Replace(dataType, identityDataType);
|
|
||||||
}
|
}
|
||||||
columnArray.Add(addItem);
|
columnArray.Add(addItem);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
namespace SqlSugar.Realization.PostgreSQL
|
||||||
|
{
|
||||||
|
public enum PostgresIdentityStrategy
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// NEXTVAL() function
|
||||||
|
/// </summary>
|
||||||
|
Serial = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// 自增长,PGSQL10+版本最佳实践
|
||||||
|
/// </summary>
|
||||||
|
Identity = 2
|
||||||
|
}
|
||||||
|
}
|
@ -900,7 +900,8 @@ namespace SqlSugar
|
|||||||
EnableILike=it.MoreSettings.EnableILike,
|
EnableILike=it.MoreSettings.EnableILike,
|
||||||
ClickHouseEnableFinal=it.MoreSettings.ClickHouseEnableFinal,
|
ClickHouseEnableFinal=it.MoreSettings.ClickHouseEnableFinal,
|
||||||
PgSqlIsAutoToLowerSchema=it.MoreSettings.PgSqlIsAutoToLowerSchema,
|
PgSqlIsAutoToLowerSchema=it.MoreSettings.PgSqlIsAutoToLowerSchema,
|
||||||
EnableJsonb=it.MoreSettings.EnableJsonb
|
EnableJsonb=it.MoreSettings.EnableJsonb,
|
||||||
|
PostgresIdentityStrategy = it.MoreSettings.PostgresIdentityStrategy
|
||||||
|
|
||||||
},
|
},
|
||||||
SqlMiddle = it.SqlMiddle == null ? null : new SqlMiddle
|
SqlMiddle = it.SqlMiddle == null ? null : new SqlMiddle
|
||||||
|
Loading…
Reference in New Issue
Block a user