update

28810
2019-11-21 20:23:06 +08:00
parent 3b77d0531a
commit b10b796cb3
2 changed files with 13 additions and 9 deletions

@@ -26,13 +26,15 @@ var repo = fsql.GetRepository<T>();
repo.DbContextOptions.EnableAddOrUpdateNavigateList = false; 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) ![image](https://user-images.githubusercontent.com/16286519/68963289-8cec8b00-0811-11ea-9a4f-12b07544e67f.png)

@@ -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 ```csharp
var song = new Song { Id = 1 }; var song = new Song { Id = 1 };
@@ -215,11 +215,13 @@ song.Tags = new List<Tag>();
song.Tags.Add(new Tag ...); song.Tags.Add(new Tag ...);
song.Tags.Add(new Tag ...); 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 表的关联 //轻松保存 song 与 tag 表的关联
``` ```
机制规则与联级保存的【多对多】一样,如下: SaveMany【一对多】的机制是完整对比保存。
SaveMany【多对多】的机制规则与联级保存的一样如下
我们对中间表的保存是完整对比操作,对外部实体的操作只作新增(注意不会更新) 我们对中间表的保存是完整对比操作,对外部实体的操作只作新增(注意不会更新)
- 属性集合为空时,删除他们的所有关联数据(中间表) - 属性集合为空时,删除他们的所有关联数据(中间表)