1. 程式人生 > 實用技巧 >netcore Task.WhenAll並行任務 &&記錄方法執行時間&&EF core AsNoTracking

netcore Task.WhenAll並行任務 &&記錄方法執行時間&&EF core AsNoTracking

執行時間

#if DEBUG
            //建立一個計時器,用來記錄程式的執行時間
            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            sw.Start();//開始計時

            var search1 = await _elasticsearch.QueryAsync(KeyWord, pageIndex, pageSize);
            
            sw.Stop();//結束計時
            var time=sw.Elapsed;
#endif

AsNoTracking

跟蹤行為決定了 Entity Framework Core 是否將有關實體例項的資訊保留在其更改跟蹤器中。如果已跟蹤某個實體,則該實體中檢測到的任何更改都會在SaveChanges()期間永久儲存到資料庫。EF Core 還將修復跟蹤查詢結果中的實體與更改跟蹤器中的實體之間的導航屬性。

用做查詢資料量大的 不可修改實體

Task並行await(Task.WhenAll)

var count = source.CountAsync();
            var items = source.Skip((pageindex - 1) * pagesize).Take(pagesize).ToListAsync();

            //Task並行 多個任務同時執行 注意ef的dbcontext很狗血
            await Task.WhenAll(count, items).ConfigureAwait(false); //ConfigureAwait(false)防止死鎖