From 5a301e13c5eff9b6467147646b26e2d5c84d2faa Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@users.noreply.github.com> Date: Mon, 5 Sep 2022 21:43:37 +0800 Subject: [PATCH 1/3] =?UTF-8?q?Updated=20=E8=81=9A=E5=90=88=E6=A0=B9?= =?UTF-8?q?=EF=BC=88=E5=AE=9E=E9=AA=8C=E5=AE=A4=EF=BC=89=20(markdown)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 聚合根(实验室).md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/聚合根(实验室).md b/聚合根(实验室).md index 83f9583..27f699a 100644 --- a/聚合根(实验室).md +++ b/聚合根(实验室).md @@ -1,5 +1,7 @@ FreeSql.Repository 定义了 IBaseRepository\ 仓储接口,实现了单表的通用仓储对象,支持了级联保存、级联删除功能,(但是)使用时需要人工自己判断何时开启、何时使用。 +本文看上去像 EF,实则有区别,主要区别在级联边界的规则设定,例如我们允许 OneToMany 从下层向上递归级联,但是仅限查询,不能增删改。研究目的希望从机制上杜绝痛点,让操作变得更可靠。 + **AggregateRootRepository 是 IBaseRepository\ 一种新的尝试实现**,它将自动处理 OneToOne/OneToMany 导航属性,以及 ManyToMany(中间表) 的级联添加、级联更新、级联删除、级联查询(查询时自动 Include/IncludeMany 它们)。 ```csharp From f104b3f01c177aa646a2a11a926dce585d3fa4c6 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@users.noreply.github.com> Date: Mon, 5 Sep 2022 21:44:19 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Updated=20=E8=81=9A=E5=90=88=E6=A0=B9?= =?UTF-8?q?=EF=BC=88=E5=AE=9E=E9=AA=8C=E5=AE=A4=EF=BC=89=20(markdown)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 聚合根(实验室).md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/聚合根(实验室).md b/聚合根(实验室).md index 27f699a..665d8d8 100644 --- a/聚合根(实验室).md +++ b/聚合根(实验室).md @@ -1,6 +1,6 @@ FreeSql.Repository 定义了 IBaseRepository\ 仓储接口,实现了单表的通用仓储对象,支持了级联保存、级联删除功能,(但是)使用时需要人工自己判断何时开启、何时使用。 -本文看上去像 EF,实则有区别,主要区别在级联边界的规则设定,例如我们允许 OneToMany 从下层向上递归级联,但是仅限查询,不能增删改。研究目的希望从机制上杜绝痛点,让操作变得更可靠。 +本文看上去像 EF,实则有区别,主要区别在级联边界的规则设定,例如我们允许 OneToMany 从下层向上递归级联,但是仅限查询,不能增删改。研究目的希望从机制上杜绝痛点,让操作变得更可控。 **AggregateRootRepository 是 IBaseRepository\ 一种新的尝试实现**,它将自动处理 OneToOne/OneToMany 导航属性,以及 ManyToMany(中间表) 的级联添加、级联更新、级联删除、级联查询(查询时自动 Include/IncludeMany 它们)。 From 12c34c33c2fc6d02a3deee3d086447eb82b48338 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@users.noreply.github.com> Date: Mon, 5 Sep 2022 22:19:28 +0800 Subject: [PATCH 3/3] =?UTF-8?q?Updated=20=E8=81=9A=E5=90=88=E6=A0=B9?= =?UTF-8?q?=EF=BC=88=E5=AE=9E=E9=AA=8C=E5=AE=A4=EF=BC=89=20(markdown)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 聚合根(实验室).md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/聚合根(实验室).md b/聚合根(实验室).md index 665d8d8..bed4fc7 100644 --- a/聚合根(实验室).md +++ b/聚合根(实验室).md @@ -14,17 +14,17 @@ var repository = fsql.GetAggregateRootRepository(); 将一个主要的实体类认定为聚合根,设定好安全的管辖范围(边界),CRUD 时会把边界之内的所有内容看作一个整体。 -`增删改` 边界之外的导航属性,向下递归时会忽略: +`增删改` 边界之外的导航属性,递归时会忽略: - ManyToOne - ManyToMany(外部表) - PgArrayToMany -`增删改` 边界之内的导航属性,向下递归时会级联操作: +`增删改` 边界之内的导航属性,递归时会级联操作: - OneToOne - OneToMany - ManyToMany(中间表) -示例1:在聚合根内递归向下的所有 OneToOne/OneToMany 导航属性 +示例1:在聚合根内递归所有 OneToOne/OneToMany 导航属性 - OneToOne: Order <-> OrderExt - OneToMany: Order <== OrderDetail @@ -70,7 +70,7 @@ class OrderDetailExt } ``` -示例2:在聚合根内递归向下的所有 ManyToMany 导航属性对应的中间表 +示例2:在聚合根内递归所有 ManyToMany 导航属性对应的中间表 - ManyToMany: Order <=> Tag - 聚合根 Order 会根据 Tags 生成 OrderTag 中间表数据,进行管理