diff --git a/联级保存.md b/联级保存.md index 49de99c..62d09ea 100644 --- a/联级保存.md +++ b/联级保存.md @@ -26,13 +26,15 @@ var repo = fsql.GetRepository(); repo.DbContextOptions.EnableAddOrUpdateNavigateList = false; ``` -# SaveManyToMany +# SaveMany -保存实体的指定【多对多】导航属性,SaveManyToMany 方法实现在 BaseRepository、DbContext。 +保存实体的指定【一对多】、【多对多】导航属性,SaveMany 方法实现在 BaseRepository、DbContext。 -解决问题:当实体类导航数据过于复杂的时候,选择关闭联级保存的功能是明智之选,但是此时【多对多】数据保存功能写起来非常繁琐麻烦(与现有数据对比后保存)。 +解决问题:当实体类导航数据过于复杂的时候,选择关闭联级保存的功能是明智之选,但是此时【一对多】、【多对多】数据保存功能写起来非常繁琐麻烦(与现有数据对比后保存)。 -机制规则与联级保存的【多对多】一样。 +SaveMany【一对多】的机制是完整对比保存。 + +SaveMany【多对多】的机制规则与联级保存的一样。 ![image](https://user-images.githubusercontent.com/16286519/68963289-8cec8b00-0811-11ea-9a4f-12b07544e67f.png) diff --git a/骚操作.md b/骚操作.md index 4e82e68..282026a 100644 --- a/骚操作.md +++ b/骚操作.md @@ -185,7 +185,7 @@ DELETE FROM `T1` WHERE id in (select a.id from T1 a left join Options b on b.t1i --- -# 10、保存多对多数据 SaveManyToMany +# 10、保存多对多数据 SaveMany 之前: @@ -205,9 +205,9 @@ repo.DbContextOptions.EnableAddOrUpdateNavigateList = false; ### 本功能: -保存实体的指定【多对多】导航属性,SaveManyToMany 方法实现在 BaseRepository、DbContext。 +保存实体的指定【一对多】、【多对多】导航属性,SaveMany 方法实现在 BaseRepository、DbContext。 -解决问题:当实体类导航数据过于复杂的时候,选择关闭联级保存的功能是明智之选,但是此时【多对多】数据保存功能写起来非常繁琐麻烦(因为要与现有数据对比后保存)。 +解决问题:当实体类导航数据过于复杂的时候,选择关闭联级保存的功能是明智之选,但是此时【一对多】、【多对多】数据保存功能写起来非常繁琐麻烦(与现有数据对比后保存)。 ```csharp var song = new Song { Id = 1 }; @@ -215,11 +215,13 @@ song.Tags = new List(); song.Tags.Add(new Tag ...); song.Tags.Add(new Tag ...); song.Tags.Add(new Tag ...); -repo.SaveManyToMany(song, "Tags"); +repo.SaveMany(song, "Tags"); //轻松保存 song 与 tag 表的关联 ``` -机制规则与联级保存的【多对多】一样,如下: +SaveMany【一对多】的机制是完整对比保存。 + +SaveMany【多对多】的机制规则与联级保存的一样,如下: 我们对中间表的保存是完整对比操作,对外部实体的操作只作新增(注意不会更新) - 属性集合为空时,删除他们的所有关联数据(中间表)