From 3cee28fd42ddeffb2cf8afac7487012b7b20d15a Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Thu, 9 Feb 2023 14:11:50 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20IUpdate=20=E7=BB=84?= =?UTF-8?q?=E5=90=88=E6=9B=B4=E6=96=B0=E6=96=B9=E5=BC=8F=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Program.cs | 24 +++++++++++++++++-- FreeSql.DbContext/FreeSql.DbContext.xml | 9 +++++++ .../Internal/CommonProvider/UpdateProvider.cs | 2 +- .../Curd/ClickHouseUpdate.cs | 2 +- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 7add2edf..aff3ea4b 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -422,11 +422,23 @@ namespace base_entity { public Guid id { get; set; } public string name { get; set; } - [Column(IsVersion = true, DbType = "timestamp", CanInsert = false, CanUpdate = false)] + [Column(IsVersion = true)] public byte[] version { get; set; } } public static void VersionBytes(IFreeSql fsql) { + + fsql.Aop.ConfigEntityProperty += (_, e) => + { + if (fsql.Ado.DataType == DataType.SqlServer && + e.Property.Name == "version") + { + e.ModifyResult.DbType = "timestamp"; + e.ModifyResult.CanInsert = false; + e.ModifyResult.CanUpdate = false; + } + }; + fsql.Delete().Where("1=1").ExecuteAffrows(); var item = new VersionBytes01 { name = "name01" }; fsql.Insert(item).ExecuteAffrows(); @@ -537,7 +549,15 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion fsql.UseJsonMap(); - VersionBytes(fsql); + + var items = new List(); + for (var a = 0; a < 3; a++) items.Add(new User1 { Id = Guid.NewGuid(), Avatar = $"avatar{a}" }); + var sqltest01 = fsql.Update() + .SetSource(items) + .UpdateColumns(a => a.Avatar) + .Set(a => a.Sort + 1).ToSql(); + + //VersionBytes(fsql); fsql.Delete().Where(a => true).ExecuteAffrows(); diff --git a/FreeSql.DbContext/FreeSql.DbContext.xml b/FreeSql.DbContext/FreeSql.DbContext.xml index 537315e2..26522f10 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.xml +++ b/FreeSql.DbContext/FreeSql.DbContext.xml @@ -800,5 +800,14 @@ + + + 批量注入 Repository,可以参考代码自行调整 + + + + + + diff --git a/FreeSql/Internal/CommonProvider/UpdateProvider.cs b/FreeSql/Internal/CommonProvider/UpdateProvider.cs index 780761b4..1a032250 100644 --- a/FreeSql/Internal/CommonProvider/UpdateProvider.cs +++ b/FreeSql/Internal/CommonProvider/UpdateProvider.cs @@ -1129,7 +1129,7 @@ namespace FreeSql.Internal.CommonProvider return; if (_setIncr.Length > 0) - sb.Append(_set.Length > 0 ? _setIncr.ToString() : _setIncr.ToString().Substring(2)); + sb.Append(_set.Length > 0 || _source.Any() ? _setIncr.ToString() : _setIncr.ToString().Substring(2)); if (_source.Any() == false) { diff --git a/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseUpdate.cs b/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseUpdate.cs index 1faf9321..88582c31 100644 --- a/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseUpdate.cs +++ b/Providers/FreeSql.Provider.ClickHouse/Curd/ClickHouseUpdate.cs @@ -189,7 +189,7 @@ namespace FreeSql.ClickHouse.Curd return; if (_setIncr.Length > 0) - sb.Append(_set.Length > 0 ? _setIncr.ToString() : _setIncr.ToString().Substring(2)); + sb.Append(_set.Length > 0 || _source.Any() ? _setIncr.ToString() : _setIncr.ToString().Substring(2)); if (_source.Any() == false) {