Synchronization code

This commit is contained in:
sunkaixuan
2023-06-20 16:08:53 +08:00
parent e5faaa5922
commit 833c77b762
8 changed files with 91 additions and 2 deletions

View File

@@ -619,6 +619,10 @@ namespace SqlSugar
{
return false;
}
if (this.Context.CurrentConnectionConfig?.MoreSettings?.EnableOracleIdentity==true&&properyTypeName?.ToLower() == "int" && dataType?.ToLower() == "decimal")
{
return false;
}
if (properyTypeName?.ToLower() == "int" && dataType?.ToLower() == "decimal"&&dc.Length==22&&dc.Scale==0&&this.Context.CurrentConnectionConfig.DbType==DbType.Oracle)
{
return false;

View File

@@ -386,6 +386,11 @@ namespace SqlSugar
column.Length = 0;
column.DecimalDigits = 0;
}
if (column.OracleSequenceName.HasValue() &&
this.Context.CurrentConnectionConfig?.MoreSettings?.EnableOracleIdentity == true)
{
column.OracleSequenceName = null;
}
result.Columns.Add(column);
}
}

View File

@@ -248,7 +248,8 @@ namespace SqlSugar
InsertSql = column.InsertSql,
InsertServerTime = column.InsertServerTime,
DataType=column.DataType,
SqlParameterDbType= column.SqlParameterDbType
SqlParameterDbType= column.SqlParameterDbType ,
IsIdentity= column.IsIdentity
};
if (column.DbColumnName == null)

View File

@@ -23,5 +23,6 @@ namespace SqlSugar
public bool IsAutoUpdateQueryFilter { get; set; }
public bool IsAutoDeleteQueryFilter { get; set; }
public bool EnableModelFuncMappingColumn { get; set; }
public bool EnableOracleIdentity { get; set; }
}
}

View File

@@ -535,6 +535,10 @@ namespace SqlSugar
{
item.Length = 50;
}
if (item.IsIdentity && this.Context.CurrentConnectionConfig?.MoreSettings?.EnableOracleIdentity == true)
{
item.DataType = "NUMBER GENERATED ALWAYS AS IDENTITY";
}
}
}
string sql = GetCreateTableSql(tableName, columns);

View File

@@ -28,6 +28,18 @@ namespace SqlSugar
InsertBuilder.IsReturnIdentity = true;
PreToSql();
string sql = InsertBuilder.ToSqlString();
if (isIdEntityEnable())
{
if (sql?.StartsWith("INSERT ALL")==true)
{
return this.UseParameter().ExecuteCommand();
}
else
{
sql = sql + " RETURNING ID INTO :newId01 ";
}
InsertBuilder.Parameters.Add(new SugarParameter(":newId01", 0,true));
}
RestoreMapping();
var isDisableMasterSlaveSeparation = this.Context.Ado.IsDisableMasterSlaveSeparation;
this.Context.Ado.IsDisableMasterSlaveSeparation = true;
@@ -36,8 +48,16 @@ namespace SqlSugar
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
After(sql,result);
AutoEnd(oldIsAuto);
if (isIdEntityEnable())
{
return this.InsertBuilder.Parameters.FirstOrDefault(it => it.ParameterName == ":newId01")?.Value?.ObjToInt()??0;
}
return result;
}
private bool isIdEntityEnable()
{
return this.Context.CurrentConnectionConfig?.MoreSettings?.EnableOracleIdentity == true;
}
public override long ExecuteReturnBigIdentity()
{
@@ -46,6 +66,18 @@ namespace SqlSugar
InsertBuilder.IsReturnIdentity = true;
PreToSql();
string sql = InsertBuilder.ToSqlString();
if (isIdEntityEnable())
{
if (sql?.StartsWith("INSERT ALL") == true)
{
return this.UseParameter().ExecuteCommand();
}
else
{
sql = sql + " RETURNING ID INTO :newId01 ";
}
InsertBuilder.Parameters.Add(new SugarParameter(":newId01", Convert.ToInt64(0), true));
}
RestoreMapping();
var isDisableMasterSlaveSeparation = this.Context.Ado.IsDisableMasterSlaveSeparation;
this.Context.Ado.IsDisableMasterSlaveSeparation = true;
@@ -54,6 +86,10 @@ namespace SqlSugar
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
After(sql, result);
AutoEnd(oldIsAuto);
if (isIdEntityEnable())
{
return this.InsertBuilder.Parameters.FirstOrDefault(it => it.ParameterName == ":newId01")?.Value?.ObjToLong() ?? 0;
}
return result;
}
@@ -64,6 +100,18 @@ namespace SqlSugar
InsertBuilder.IsReturnIdentity = true;
PreToSql();
string sql = InsertBuilder.ToSqlString();
if (isIdEntityEnable())
{
if (sql?.StartsWith("INSERT ALL") == true)
{
return await this.UseParameter().ExecuteCommandAsync();
}
else
{
sql = sql + " RETURNING ID INTO :newId01 ";
}
InsertBuilder.Parameters.Add(new SugarParameter(":newId01", 0, true));
}
RestoreMapping();
var isDisableMasterSlaveSeparation = this.Context.Ado.IsDisableMasterSlaveSeparation;
this.Context.Ado.IsDisableMasterSlaveSeparation = true;
@@ -72,6 +120,10 @@ namespace SqlSugar
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
After(sql, result);
AutoEnd(oldIsAuto);
if (isIdEntityEnable())
{
return this.InsertBuilder.Parameters.FirstOrDefault(it => it.ParameterName == ":newId01")?.Value?.ObjToInt() ?? 0;
}
return result;
}
@@ -82,6 +134,18 @@ namespace SqlSugar
InsertBuilder.IsReturnIdentity = true;
PreToSql();
string sql = InsertBuilder.ToSqlString();
if (isIdEntityEnable())
{
if (sql?.StartsWith("INSERT ALL") == true)
{
return await this.UseParameter().ExecuteCommandAsync();
}
else
{
sql = sql + " RETURNING ID INTO :newId01 ";
}
InsertBuilder.Parameters.Add(new SugarParameter(":newId01", Convert.ToInt64(0), true));
}
RestoreMapping();
var isDisableMasterSlaveSeparation = this.Context.Ado.IsDisableMasterSlaveSeparation;
this.Context.Ado.IsDisableMasterSlaveSeparation = true;
@@ -90,6 +154,10 @@ namespace SqlSugar
this.Context.Ado.IsDisableMasterSlaveSeparation = isDisableMasterSlaveSeparation;
After(sql, result);
AutoEnd(oldIsAuto);
if (isIdEntityEnable())
{
return this.InsertBuilder.Parameters.FirstOrDefault(it => it.ParameterName == ":newId01")?.Value?.ObjToLong() ?? 0;
}
return result;
}

View File

@@ -33,11 +33,16 @@ namespace SqlSugar
{
DbColumnInfoList = DbColumnInfoList.Where(it => it.Value != null).ToList();
}
if (this.Context.CurrentConnectionConfig?.MoreSettings?.EnableOracleIdentity == true)
{
this.DbColumnInfoList = this.DbColumnInfoList.Where(it => it.IsIdentity == false).ToList();
}
var groupList = DbColumnInfoList.GroupBy(it => it.TableId).ToList();
var isSingle = groupList.Count() == 1;
string columnsString = string.Join(",", groupList.First().Select(it => Builder.GetTranslationColumnName(it.DbColumnName)));
if (isSingle && this.EntityInfo.EntityName != "Dictionary`2")
{
string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => base.GetDbColumn(it, Builder.SqlParameterKeyWord + it.DbColumnName)));
if (identities.HasValue())
{

View File

@@ -350,7 +350,8 @@ namespace SqlSugar
IsAutoToUpper=it.MoreSettings.IsAutoToUpper,
IsAutoDeleteQueryFilter=it.MoreSettings.IsAutoDeleteQueryFilter,
IsAutoUpdateQueryFilter = it.MoreSettings.IsAutoUpdateQueryFilter,
EnableModelFuncMappingColumn=it.MoreSettings.EnableModelFuncMappingColumn
EnableModelFuncMappingColumn=it.MoreSettings.EnableModelFuncMappingColumn,
EnableOracleIdentity = it.MoreSettings.EnableOracleIdentity
},
SqlMiddle = it.SqlMiddle == null ? null : new SqlMiddle