From 5d335ca41f8c0a7cab67b5dc019d92f22ab2347d Mon Sep 17 00:00:00 2001 From: BurakCinar07 Date: Wed, 29 Dec 2021 14:19:48 +0300 Subject: [PATCH 1/2] Npgsql version update. --- .gitignore | 1 + Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 89f69d9d3..5ca33dafb 100644 --- a/.gitignore +++ b/.gitignore @@ -208,3 +208,4 @@ FakesAssemblies/ GeneratedArtifacts/ _Pvt_Extensions/ ModelManifest.xml +Src/Asp.NetCore2/SqlSeverTest/.idea/ diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj index 118544286..cf758b414 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj @@ -23,7 +23,7 @@ - + From dd2a775d49b6e55eb421f91ac5343eeabeb9d37c Mon Sep 17 00:00:00 2001 From: BurakCinar07 Date: Wed, 29 Dec 2021 14:24:36 +0300 Subject: [PATCH 2/2] Added AfterData method call to PostgresqlProvider ExecuteReturnIdentity methods. OnDiffLogEvent doesn't fire if AfterData method is not called. IsPrimaryKey property added to DiffLogColumnInfo in order to keep track of audit entity identifier. --- .../DeleteProvider/DeleteableProvider.cs | 5 +++- .../InsertableProvider/InsertableProvider.cs | 25 +++++++++++++++---- .../UpdateProvider/UpdateableProvider.cs | 5 +++- .../SqlSugar/Entities/DiffLogModel.cs | 5 ++-- .../Insertable/PostgreSQLInserttable.cs | 4 +++ 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index f6c628745..7bcd4018b 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -520,10 +520,13 @@ namespace SqlSugar item.Columns = new List(); foreach (DataColumn col in dt.Columns) { + var sugarColumn = this.EntityInfo.Columns.Where(it => it.DbColumnName != null).First(it => + it.DbColumnName.Equals(col.ColumnName, StringComparison.CurrentCultureIgnoreCase)); DiffLogColumnInfo addItem = new DiffLogColumnInfo(); addItem.Value = row[col.ColumnName]; addItem.ColumnName = col.ColumnName; - addItem.ColumnDescription = this.EntityInfo.Columns.Where(it=>it.DbColumnName!=null).First(it => it.DbColumnName.Equals(col.ColumnName, StringComparison.CurrentCultureIgnoreCase)).ColumnDescription; + addItem.IsPrimaryKey = sugarColumn.IsPrimarykey; + addItem.ColumnDescription = sugarColumn.ColumnDescription; item.Columns.Add(addItem); } result.Add(item); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index 0d62769cb..ac89cd9ed 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -809,11 +809,13 @@ namespace SqlSugar item.Columns = new List(); foreach (DataColumn col in dt2.Columns) { - + var sugarColumn = this.EntityInfo.Columns.Where(it => it.DbColumnName != null).FirstOrDefault(it => + it.DbColumnName.Equals(col.ColumnName, StringComparison.CurrentCultureIgnoreCase)); DiffLogColumnInfo addItem = new DiffLogColumnInfo(); addItem.Value = row[col.ColumnName]; addItem.ColumnName = col.ColumnName; - addItem.ColumnDescription = this.EntityInfo.Columns.Where(it => it.DbColumnName != null).FirstOrDefault(it => it.DbColumnName.Equals(col.ColumnName, StringComparison.CurrentCultureIgnoreCase))?.ColumnDescription; + addItem.IsPrimaryKey = sugarColumn?.IsPrimarykey ?? false; + addItem.ColumnDescription = sugarColumn?.ColumnDescription; item.Columns.Add(addItem); } result.Add(item); @@ -830,7 +832,16 @@ namespace SqlSugar if (identity != null && identity > 0 && GetIdentityKeys().HasValue()) { var fieldName = GetIdentityKeys().Last(); - cons.Add(new ConditionalModel() { ConditionalType = ConditionalType.Equal, FieldName = fieldName, FieldValue = identity.ToString() }); + + if (this.Context.CurrentConnectionConfig.DbType == DbType.PostgreSQL) + { + var fieldObjectType = this.EntityInfo.Columns.FirstOrDefault(x => x.DbColumnName == fieldName) + .PropertyInfo.PropertyType; + cons.Add(new ConditionalModel() { ConditionalType = ConditionalType.Equal, FieldName = fieldName, FieldValue = identity.ToString(), + FieldValueConvertFunc = it => UtilMethods.ChangeType2(it, fieldObjectType) }); + } + else + cons.Add(new ConditionalModel() { ConditionalType = ConditionalType.Equal, FieldName = fieldName, FieldValue = identity.ToString() }); } else { @@ -864,10 +875,13 @@ namespace SqlSugar item.Columns = new List(); foreach (DataColumn col in dt.Columns) { + var sugarColumn = this.EntityInfo.Columns.Where(it => it.DbColumnName != null).First(it => + it.DbColumnName.Equals(col.ColumnName, StringComparison.CurrentCultureIgnoreCase)); DiffLogColumnInfo addItem = new DiffLogColumnInfo(); addItem.Value = row[col.ColumnName]; addItem.ColumnName = col.ColumnName; - addItem.ColumnDescription = this.EntityInfo.Columns.Where(it => it.DbColumnName != null).First(it => it.DbColumnName.Equals(col.ColumnName, StringComparison.CurrentCultureIgnoreCase)).ColumnDescription; + addItem.IsPrimaryKey = sugarColumn.IsPrimarykey; + addItem.ColumnDescription = sugarColumn.ColumnDescription; item.Columns.Add(addItem); } result.Add(item); @@ -883,7 +897,8 @@ namespace SqlSugar { ColumnDescription = it.ColumnDescription, ColumnName = it.DbColumnName, - Value = it.PropertyInfo.GetValue(this.InsertObjs.Last(), null) + Value = it.PropertyInfo.GetValue(this.InsertObjs.Last(), null), + IsPrimaryKey = it.IsPrimarykey }).ToList(); return new List() { diffTable }; } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 985dac4f7..4cdaa8827 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -840,10 +840,13 @@ namespace SqlSugar item.Columns = new List(); foreach (DataColumn col in dt.Columns) { + var sugarColumn = this.EntityInfo.Columns.Where(it => it.DbColumnName != null).First(it => + it.DbColumnName.Equals(col.ColumnName, StringComparison.CurrentCultureIgnoreCase)); DiffLogColumnInfo addItem = new DiffLogColumnInfo(); addItem.Value = row[col.ColumnName]; addItem.ColumnName = col.ColumnName; - addItem.ColumnDescription = this.EntityInfo.Columns.Where(it => it.DbColumnName != null).First(it => it.DbColumnName.Equals(col.ColumnName, StringComparison.CurrentCultureIgnoreCase)).ColumnDescription; + addItem.IsPrimaryKey = sugarColumn.IsPrimarykey; + addItem.ColumnDescription = sugarColumn.ColumnDescription; item.Columns.Add(addItem); } result.Add(item); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DiffLogModel.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DiffLogModel.cs index d8ae772a5..edcb6e352 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DiffLogModel.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/DiffLogModel.cs @@ -21,10 +21,11 @@ namespace SqlSugar public string TableDescription { get; set; } public List Columns { get; set; } } - public class DiffLogColumnInfo { - + public class DiffLogColumnInfo + { public string ColumnName { get; set; } public string ColumnDescription { get; set; } public object Value { get; set; } + public bool IsPrimaryKey { get; set; } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/Insertable/PostgreSQLInserttable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/Insertable/PostgreSQLInserttable.cs index acd300eb3..ff49bd017 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/Insertable/PostgreSQLInserttable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Realization/PostgreSQL/Insertable/PostgreSQLInserttable.cs @@ -16,6 +16,7 @@ namespace SqlSugar string sql = InsertBuilder.ToSqlString().Replace("$PrimaryKey",this.SqlBuilder.GetTranslationColumnName(GetIdentityKeys().FirstOrDefault())); RestoreMapping(); var result = Ado.GetScalar(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray()).ObjToInt(); + After(sql, result); return result; } public override async Task ExecuteReturnIdentityAsync() @@ -26,6 +27,7 @@ namespace SqlSugar RestoreMapping(); var obj = await Ado.GetScalarAsync(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray()); var result = obj.ObjToInt(); + After(sql, result); return result; } public override KeyValuePair> ToSql() @@ -41,6 +43,7 @@ namespace SqlSugar string sql = InsertBuilder.ToSqlString().Replace("$PrimaryKey", this.SqlBuilder.GetTranslationColumnName(GetIdentityKeys().FirstOrDefault())); RestoreMapping(); var result = Convert.ToInt64(Ado.GetScalar(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray()) ?? "0"); + After(sql, result); return result; } public override async Task ExecuteReturnBigIdentityAsync() @@ -50,6 +53,7 @@ namespace SqlSugar string sql = InsertBuilder.ToSqlString().Replace("$PrimaryKey", this.SqlBuilder.GetTranslationColumnName(GetIdentityKeys().FirstOrDefault())); RestoreMapping(); var result = Convert.ToInt64(await Ado.GetScalarAsync(sql, InsertBuilder.Parameters == null ? null : InsertBuilder.Parameters.ToArray()) ?? "0"); + After(sql, result); return result; }