mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-04 15:30:53 +08:00
update
10
联级保存.md
10
联级保存.md
@@ -26,13 +26,15 @@ var repo = fsql.GetRepository<T>();
|
||||
repo.DbContextOptions.EnableAddOrUpdateNavigateList = false;
|
||||
```
|
||||
|
||||
# SaveManyToMany
|
||||
# SaveMany
|
||||
|
||||
保存实体的指定【多对多】导航属性,SaveManyToMany 方法实现在 BaseRepository、DbContext。
|
||||
保存实体的指定【一对多】、【多对多】导航属性,SaveMany 方法实现在 BaseRepository、DbContext。
|
||||
|
||||
解决问题:当实体类导航数据过于复杂的时候,选择关闭联级保存的功能是明智之选,但是此时【多对多】数据保存功能写起来非常繁琐麻烦(与现有数据对比后保存)。
|
||||
解决问题:当实体类导航数据过于复杂的时候,选择关闭联级保存的功能是明智之选,但是此时【一对多】、【多对多】数据保存功能写起来非常繁琐麻烦(与现有数据对比后保存)。
|
||||
|
||||
机制规则与联级保存的【多对多】一样。
|
||||
SaveMany【一对多】的机制是完整对比保存。
|
||||
|
||||
SaveMany【多对多】的机制规则与联级保存的一样。
|
||||
|
||||

|
||||
|
||||
|
||||
12
骚操作.md
12
骚操作.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<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 表的关联
|
||||
```
|
||||
|
||||
机制规则与联级保存的【多对多】一样,如下:
|
||||
SaveMany【一对多】的机制是完整对比保存。
|
||||
|
||||
SaveMany【多对多】的机制规则与联级保存的一样,如下:
|
||||
|
||||
我们对中间表的保存是完整对比操作,对外部实体的操作只作新增(注意不会更新)
|
||||
- 属性集合为空时,删除他们的所有关联数据(中间表)
|
||||
|
||||
Reference in New Issue
Block a user