diff --git a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProvider.cs index 27e46656f..11ba8d413 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProvider.cs @@ -53,6 +53,7 @@ namespace SqlSugar private UpdateNavProvider _ThenInclude(Expression> expression) where TChild : class, new() { + var isRoot = _RootList == null; InitParentList(); var name = ExpressionTool.GetMemberName(expression); var nav = this._ParentEntity.Columns.FirstOrDefault(x => x.PropertyName == name); @@ -60,6 +61,7 @@ namespace SqlSugar { Check.ExceptionEasy($"{name} no navigate attribute", $"{this._ParentEntity.EntityName}的属性{name}没有导航属性"); } + UpdateRoot(isRoot, nav); if (nav.Navigat.NavigatType == NavigateType.OneToOne || nav.Navigat.NavigatType == NavigateType.ManyToOne) { UpdateOneToOne(name, nav); @@ -74,9 +76,9 @@ namespace SqlSugar } return GetResult(); } - private UpdateNavProvider _ThenInclude(Expression>> expression) where TChild : class, new() { + var isRoot = _RootList == null; InitParentList(); var name = ExpressionTool.GetMemberName(expression); var nav = this._ParentEntity.Columns.FirstOrDefault(x => x.PropertyName == name); @@ -84,6 +86,7 @@ namespace SqlSugar { Check.ExceptionEasy($"{name} no navigate attribute", $"{this._ParentEntity.EntityName}的属性{name}没有导航属性"); } + UpdateRoot(isRoot, nav); if (nav.Navigat.NavigatType == NavigateType.OneToOne || nav.Navigat.NavigatType == NavigateType.ManyToOne) { UpdateOneToOne(name, nav); @@ -98,5 +101,20 @@ namespace SqlSugar } return GetResult(); } + private void UpdateRoot(bool isRoot, EntityColumnInfo nav) + { + if (isRoot && nav.Navigat.NavigatType != NavigateType.ManyToMany) + { + this._Context.Updateable(_Roots).ExecuteCommand(); + } + else + { + if (_Options != null && _Options.ManyToManyIsUpdateA) + { + this._Context.Updateable(_Roots).ExecuteCommand(); + } + } + } + } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProviderHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProviderHelper.cs index 5f5ca7d7a..a0c7ab1dc 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProviderHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavProviderHelper.cs @@ -18,10 +18,6 @@ namespace SqlSugar { if (_RootList == null) { - if (_Options != null && _Options.ManyToManyIsUpdateA) - { - this._Context.Updateable(_Roots).ExecuteCommand(); - } _RootList = _ParentList = _Roots.Cast().ToList(); _ParentEntity = this._Context.EntityMaintenance.GetEntityInfo(); }