From 801ba148d6233d9076f4ad6ef5baa9dbbcb47235 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Thu, 19 Oct 2023 14:42:52 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20UpdateJoin=20IsVersion?= =?UTF-8?q?=20=E5=AD=97=E6=AE=B5=E7=9A=84=E5=88=AB=E5=90=8D=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Internal/CommonProvider/UpdateProvider.cs | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/FreeSql/Internal/CommonProvider/UpdateProvider.cs b/FreeSql/Internal/CommonProvider/UpdateProvider.cs index 27059ad1..50388446 100644 --- a/FreeSql/Internal/CommonProvider/UpdateProvider.cs +++ b/FreeSql/Internal/CommonProvider/UpdateProvider.cs @@ -1216,6 +1216,24 @@ namespace FreeSql.Internal.CommonProvider if (_versionColumn != null && _versionColumn.Attribute.CanUpdate) { var vcname = _commonUtils.QuoteSqlName(_versionColumn.Attribute.Name); + var vcvalue = vcname; + if (string.IsNullOrWhiteSpace(_tableAlias) == false) + { + switch (_orm.Ado.DataType) + { + case DataType.PostgreSQL: + case DataType.OdbcPostgreSQL: + case DataType.CustomPostgreSQL: + case DataType.KingbaseES: + case DataType.OdbcKingbaseES: + case DataType.ShenTong: + vcvalue = $"{_tableAlias}.{vcname}"; //set name = b.name + break; + default: + vcname = vcvalue = $"{_tableAlias}.{vcname}"; //set a.name = b.name + break; + } + } if (_versionColumn.Attribute.MapType == typeof(byte[])) { _updateVersionValue = Utils.GuidToBytes(Guid.NewGuid()); @@ -1227,7 +1245,7 @@ namespace FreeSql.Internal.CommonProvider sb.Append(", ").Append(vcname).Append(" = ").Append(_commonUtils.GetNoneParamaterSqlValue(_paramsSource, "uv", _versionColumn, _versionColumn.Attribute.MapType, _updateVersionValue)); } else - sb.Append(", ").Append(vcname).Append(" = ").Append(_commonUtils.IsNull(vcname, 0)).Append(" + 1"); + sb.Append(", ").Append(vcname).Append(" = ").Append(_commonUtils.IsNull(vcvalue, 0)).Append(" + 1"); } ToSqlWhere(sb); _interceptSql?.Invoke(sb);