mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-06 16:30:52 +08:00
update
47
贪婪加载.md
47
贪婪加载.md
@@ -97,6 +97,53 @@ new List<Song>(new[] { song1, song2, song3 }).IncludeMany(g.sqlite, a => a.Tags)
|
||||
|
||||
这是一个扩展方法(IncludeMany),方法名与 ISelect.IncludeMany 同名,参数基本一致(除了需要额外传递 IFreeSql 对象参数),功能也一致(包括前面提到的变异)。
|
||||
|
||||
## IncludeMany 两种方式对比
|
||||
|
||||
方式一(IncludeMany 扩展方法):
|
||||
|
||||
```csharp
|
||||
var list111 = g.sqlite.Select<SysModule>()
|
||||
.Page(1, 10)
|
||||
.ToList(a => new { Id = a.Id }) //查询数据 id
|
||||
.Select(a => new SysModule { Id = a.Id }).ToList() //内存操作
|
||||
.IncludeMany(g.sqlite, a => a.Permissions, then => then.Include(a => a.Button));
|
||||
```
|
||||
|
||||
```sql
|
||||
SELECT a."Id" as1
|
||||
FROM "SysModule" a
|
||||
limit 0,10
|
||||
|
||||
SELECT a."Id", a."SysModuleId", a."SysModuleButtonId", a."Status",
|
||||
a__Button."Id" as5, a__Button."Name", a__Button."EventName", a__Button."EnCode", a__Button."Icon", a__Button."Sort", a__Button."CreateTime"
|
||||
FROM "SysModulePermission" a
|
||||
LEFT JOIN "SysModuleButton" a__Button ON a__Button."Id" = a."SysModuleButtonId"
|
||||
WHERE ((a."SysModuleId") in ('menu1','menu2'))
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
方式二(直接 IncludeMany + ToList):
|
||||
|
||||
```csharp
|
||||
var list222 = g.sqlite.Select<SysModule>()
|
||||
.IncludeMany(m => m.Permissions, then => then.Include(a => a.Button))
|
||||
.Page(1, 10)
|
||||
.ToList();
|
||||
```
|
||||
|
||||
```sql
|
||||
SELECT a."Id", a."ParentId", a."Name", a."Icon", a."UrlAddress", a."IsShow", a."Sort", a."Description", a."CreateTime"
|
||||
FROM "SysModule" a
|
||||
limit 0,10
|
||||
|
||||
SELECT a."Id", a."SysModuleId", a."SysModuleButtonId", a."Status",
|
||||
a__Button."Id" as5, a__Button."Name", a__Button."EventName", a__Button."EnCode", a__Button."Icon", a__Button."Sort", a__Button."CreateTime"
|
||||
FROM "SysModulePermission" a
|
||||
LEFT JOIN "SysModuleButton" a__Button ON a__Button."Id" = a."SysModuleButtonId"
|
||||
WHERE ((a."SysModuleId") in ('menu1','menu2'))
|
||||
```
|
||||
|
||||
## 参考资料
|
||||
|
||||
- [《多表查询》](https://github.com/2881099/FreeSql/wiki/%e5%a4%9a%e8%a1%a8%e6%9f%a5%e8%af%a2)
|
||||
|
||||
Reference in New Issue
Block a user