|
|
bc1f1422e9
|
加入 TODO 註解標記需優化的查詢
標記位置:
1. GetFollowerOrders (Line 402)
- 建議加入分頁或日期範圍限制
2. GetActivityFollowers (Line 1048)
- 建議在數據庫層面過濾未完成沖帳項目
- 考慮加入 Take() 或分頁
目的:
方便日後追蹤並優化性能瓶頸
|
2025-11-12 17:21:53 +08:00 |
|
|
|
1698b51d19
|
優化 transfer_registerController.cs 中的 AsEnumerable 位置
問題:
之前將某些 AsEnumerable() 改為 ToList() 可能導致數據過載
優化:
1. GetFollowerOrders (Line 420)
- 改回 AsEnumerable()
- 原因:雖然有 f_num 限制,但信眾可能有大量訂單
- AsEnumerable() 確保數據庫查詢先執行,只在需要內存計算時才轉換
2. GetActivityFollowers (Line 1057)
- 改回 AsEnumerable()
- 原因:activity_num 限制可能包含大量訂單(數千條)
- AsEnumerable() 避免將所有數據載入內存
保持不變:
- Line 240:follower 查詢的 ToList() 保持不變
原因:Where(f.num == x.f_num) 限制為單一記錄
需要在內存中執行解密操作
技術原則:
- AsEnumerable() 應該在「數據庫查詢完成後、內存計算前」使用
- ToList() 只在「確定數據量小」或「必須立即執行」時使用
- 解密等無法在數據庫執行的操作必須在內存中進行
|
2025-11-12 17:20:36 +08:00 |
|
|
|
4e26dd648d
|
完成 Batch 3:修復 4 個 API Controller 的 AsEnumerable 問題
修復文件(共 17 處):
1. supplierController.cs (6 處)
- 移除簡單查詢的 AsEnumerable() (2 處)
- AsEnumerable() → AsQueryable() (GetList, GetKindList)
- 優化分頁查詢模式(Count + ToPagedList.ToList())(2 處)
- 修復 Split().Select().ToList() 類型問題
2. adminUserController.cs (4 處)
- 移除簡單查詢的 AsEnumerable()
- AsEnumerable() → AsQueryable() (GetList)
- 優化分頁查詢模式
- 重構複雜查詢:移除嵌套的 AsEnumerable()
改為先 ToList() 再使用 Contains
3. orderdetailController.cs (3 處)
- 移除 AsEnumerable(),改為在查詢末端使用 OrderBy
- 優化分頁查詢模式
- 修復 null-propagating operator:
.FirstOrDefault()?.print_id → .Select(u => u.print_id).FirstOrDefault()
4. transfer_registerController.cs (6 處)
- AsEnumerable() → ToList() (需要解密操作的情況)
- 保留在必要時才轉換到內存操作
- 確保數據庫查詢先執行
技術改進:
✓ 複雜嵌套查詢優化(adminUserController)
✓ 解密操作前置優化(transfer_registerController)
✓ Null-propagating operator 替換為安全的 Select
✓ 統一使用三元運算符處理分頁
✓ IEnumerable<int> → List<int> 避免類型轉換錯誤
|
2025-11-12 17:18:12 +08:00 |
|
|
|
af2c152ef6
|
migrate to new git
|
2025-08-29 01:27:25 +08:00 |
|