Synchronization code

This commit is contained in:
sunkaixuan 2023-09-10 01:39:28 +08:00
parent e2f29d672c
commit ff8d5a2548
2 changed files with 26 additions and 3 deletions

View File

@ -8,6 +8,7 @@ namespace SqlSugar
{
public partial class UpdateNavProvider<Root, T> where T : class, new() where Root : class, new()
{
protected bool IsDeleted { get; set; }
private void UpdateOneToOne<TChild>(string name, EntityColumnInfo nav) where TChild : class, new()
{
var parentEntity = _ParentEntity;
@ -16,6 +17,7 @@ namespace SqlSugar
var parentColumn = parentEntity.Columns.FirstOrDefault(it => it.PropertyName == nav.Navigat.Name);
var parentPkColumn = parentEntity.Columns.FirstOrDefault(it => it.IsPrimarykey);
var thisEntity = this._Context.EntityMaintenance.GetEntityInfo<TChild>();
IsDeleted = thisEntity.Columns.Any(it => it.PropertyName.EqualCase("isdeleted") || it.PropertyName.EqualCase("isdelete"));
EntityColumnInfo thisPkColumn = GetPkColumnByNav(thisEntity, nav);
Check.ExceptionEasy(thisPkColumn == null, $" Navigate {parentEntity.EntityName} : {name} is error ", $"导航实体 {parentEntity.EntityName} 属性 {name} 配置错误");
Check.ExceptionEasy(nav.Navigat.WhereSql.HasValue(), $" {name} Navigate(NavType,WhereSql) no support update ", $"导航一对一 {name} 配置了 Sql变量 不支持更新");

View File

@ -84,7 +84,14 @@ namespace SqlSugar
Check.ExceptionEasy(exp == null, "UpdateOptions.CurrentFunc is error", "UpdateOptions.CurrentFunc参数设置错误");
var com = exp.Compile();
com(updateable);
updateable.ExecuteCommand();
if (IsDeleted)
{
updateable.PageSize(1).EnableQueryFilter().ExecuteCommand();
}
else
{
updateable.ExecuteCommand();
}
}
else if (pkColumn.IsPrimarykey == false)
{
@ -94,11 +101,25 @@ namespace SqlSugar
{
ignoreColumns.AddRange(pk.Select(it=>it.PropertyName));
}
x.AsUpdateable.IgnoreColumns(ignoreColumns.ToArray()).ExecuteCommand();
if (IsDeleted)
{
x.AsUpdateable.IgnoreColumns(ignoreColumns.ToArray()).PageSize(1).EnableQueryFilter().ExecuteCommand();
}
else
{
x.AsUpdateable.IgnoreColumns(ignoreColumns.ToArray()).ExecuteCommand();
}
}
else
{
x.AsUpdateable.ExecuteCommand();
if (IsDeleted)
{
x.AsUpdateable.PageSize(1).EnableQueryFilter().ExecuteCommand();
}
else
{
x.AsUpdateable.ExecuteCommand();
}
}
InitData(pkColumn, insertData);
if (_NavigateType == NavigateType.OneToMany)