Trae + claude3.7
事情的經過是這樣的:
我有個方法代碼如下:
/// <summary> /// 獲取客戶端列表 /// </summary> /// <param name="input">查詢條件參數,包含搜索、排序和分頁信息</param> /// <param name="cancellationToken">異步取消標記</param> /// <returns>客戶端數據集合</returns> public async Task<Khdsc> GetClientsAsync(Hqkhdsr input, CancellationToken cancellationToken = default) { var q = db.Clients.AsNoTracking(); //條件和排序...略... logger.LogWarning("執行GetClientsAsync" + tp.GetUtcNow()); var total = await q.CountAsync(cancellationToken); //await Task.Delay(3000); q = q.OrderBy(input.sort + " " + input.Order).Skip(input.Offset).Take(input.Limit);// .Page(input.Limit, input.Offset / input.Limit + 1); var list = await q.ToListAsync(cancellationToken); return new Khdsc { BridgePort = default, BridgeType = default, Ip = default, Total = total, Rows = list.Select(MapClientEntityToKhdrow).ToList(), }; }
然后執行報錯了:
在 Microsoft.EntityFrameworkCore.Infrastructure.Internal.ConcurrencyDetector.EnterCriticalSection() 在 Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.<MoveNextAsync>d__20.MoveNext() 在 System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() 在 Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.<ToListAsync>d__67`1.MoveNext() 在 Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.<ToListAsync>d__67`1.MoveNext() 在 YCSDK.Sdf.<GetClientsAsync>d__12.MoveNext() 在 D:\fyjiot\src\YCSKDFolder\YCSDK\Sdf.cs 中: 第 171 行 在 YCSDK.RCL.Client.ClientList.<LoadClientListAsync>d__17.MoveNext() 在 D:\fyjiot\src\YCSKDFolder\YCSDK.RCL\Client\ClientList.razor.cs 中: 第 77 行
有經驗的老表一看就曉得是多線程使用同一個dbcontext實例出的問題。所以我仔細排查了我的代碼,實在看不出問題,想想問問Ai吧,對話如下:



看到這里我開始懷疑我自己了,也想不通微軟為什么要在efcore9中做出這樣的改變,會不會是ef9有bug?這樣設計不合理啊。
然后我就開始換豆包、chatgpt、千問,各種問,它們基本沒法提供有價值的信息。然后又直接各種搜索,由于ef9太新,也搜不出啥東東來。
然后又建測試項目,單獨測試又沒問題,這個時候我就開始懷疑開始Ai給的回答了,
最終各種折騰發現問題是我用的antblazor刷新數據默認是開了線程的,重點是界面部分我也是讓Ai它幫我寫的。
到這里問題就解決了。
我想說的是,我開始問ai它給了我一個錯誤的回答,辛虧我了解這里,所以質疑它,但它居然再次回答時說得有理有據,我不信邪再次問他是不是ef9的版本導致的,它也說得頭頭是道。
如果不熟悉ef的人估計會被它帶偏,對ef9會產生一種錯誤的認識,搞得不好還會去把老項目都重構下,浪費時間,以后發現不是ef9的問題又重構回去,再浪費一次時間。
所以感覺目前的Ai有個陷阱,就是讓不了解某個領域的人,可以用Ai去完成那個領域的事,同時埋一堆雷在那里。
浙公網安備 33010602011771號