- 优化 IUpdate 组合更新方式;

This commit is contained in:
2881099 2023-02-09 14:11:50 +08:00
parent 910cd9dc9f
commit 3cee28fd42
4 changed files with 33 additions and 4 deletions

View File

@ -422,11 +422,23 @@ namespace base_entity
{ {
public Guid id { get; set; } public Guid id { get; set; }
public string name { 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 byte[] version { get; set; }
} }
public static void VersionBytes(IFreeSql fsql) 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<VersionBytes01>().Where("1=1").ExecuteAffrows(); fsql.Delete<VersionBytes01>().Where("1=1").ExecuteAffrows();
var item = new VersionBytes01 { name = "name01" }; var item = new VersionBytes01 { name = "name01" };
fsql.Insert(item).ExecuteAffrows(); fsql.Insert(item).ExecuteAffrows();
@ -537,7 +549,15 @@ namespace base_entity
BaseEntity.Initialization(fsql, () => _asyncUow.Value); BaseEntity.Initialization(fsql, () => _asyncUow.Value);
#endregion #endregion
fsql.UseJsonMap(); fsql.UseJsonMap();
VersionBytes(fsql);
var items = new List<User1>();
for (var a = 0; a < 3; a++) items.Add(new User1 { Id = Guid.NewGuid(), Avatar = $"avatar{a}" });
var sqltest01 = fsql.Update<User1>()
.SetSource(items)
.UpdateColumns(a => a.Avatar)
.Set(a => a.Sort + 1).ToSql();
//VersionBytes(fsql);
fsql.Delete<TJson01>().Where(a => true).ExecuteAffrows(); fsql.Delete<TJson01>().Where(a => true).ExecuteAffrows();

View File

@ -800,5 +800,14 @@
<param name="that"></param> <param name="that"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Microsoft.Extensions.DependencyInjection.FreeSqlRepositoryDependencyInjection.AddFreeRepository(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{FreeSql.FluentDataFilter},System.Reflection.Assembly[])">
<summary>
批量注入 Repository可以参考代码自行调整
</summary>
<param name="services"></param>
<param name="globalDataFilter"></param>
<param name="assemblies"></param>
<returns></returns>
</member>
</members> </members>
</doc> </doc>

View File

@ -1129,7 +1129,7 @@ namespace FreeSql.Internal.CommonProvider
return; return;
if (_setIncr.Length > 0) 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) if (_source.Any() == false)
{ {

View File

@ -189,7 +189,7 @@ namespace FreeSql.ClickHouse.Curd
return; return;
if (_setIncr.Length > 0) 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) if (_source.Any() == false)
{ {