From 5000cf80f7b64cbd65604ef4d516aaef5b982c40 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Wed, 3 Aug 2022 10:44:23 +0800 Subject: [PATCH] Update db.InsertNav --- .../ExecuteNavProvider/InsertNavProviderHelper.cs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/InsertNavProviderHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/InsertNavProviderHelper.cs index 8de0301b2..4625594e7 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/InsertNavProviderHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/InsertNavProviderHelper.cs @@ -81,12 +81,20 @@ namespace SqlSugar children = children.Distinct().ToList(); var x = this._Context.Storageable(children).WhereColumns(new string[] { pkColumn.PropertyName }).ToStorage(); var insertData = children = x.InsertList.Select(it => it.Item).ToList(); - if (_NavigateType == NavigateType.OneToMany&&IsFirst==false) + var IsNoExistsNoInsert = _navOptions != null && _navOptions.OneToManyIfExistsNoInsert == true; + if (_NavigateType == NavigateType.OneToMany && IsFirst == false && IsNoExistsNoInsert == false) { var updateData = x.UpdateList.Select(it => it.Item).ToList(); ClearPk(updateData, pkColumn); insertData.AddRange(updateData); } + else if (_NavigateType == NavigateType.OneToMany && IsNoExistsNoInsert == true) + { + children = new List(); + children.AddRange(x.InsertList.Select(it => it.Item).ToList()); + var updateData = x.UpdateList.Select(it => it.Item).ToList(); + children.AddRange(updateData); + } Check.ExceptionEasy(pkColumn==null&&NavColumn==null,$"The entity is invalid",$"实体错误无法使用导航"); InitData(pkColumn, insertData); this._ParentList = children.Cast().ToList();