Ai满嘴顺口溜,想考研?浪费我几个小时

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:fyjiotsrcYCSKDFolderYCSDKSdf.cs 中: 第 171 行 在 YCSDK.RCL.Client.ClientList.<LoadClientListAsync>d__17.MoveNext() 在 D:fyjiotsrcYCSKDFolderYCSDK.RCLClientClientList.razor.cs 中: 第 77

有经验的老表一看就晓得是多线程使用同一个dbcontext实例出的问题。所以我仔细排查了我的代码,实在看不出问题,想想问问Ai吧,对话如下:

Ai满嘴顺口溜,想考研?浪费我几个小时

Ai满嘴顺口溜,想考研?浪费我几个小时

Ai满嘴顺口溜,想考研?浪费我几个小时

看到这里我开始怀疑我自己了,也想不通微软为什么要在efcore9中做出这样的改变,会不会是ef9有bug?这样设计不合理啊。

然后我就开始换豆包、chatgpt、千问,各种问,它们基本没法提供有价值的信息。然后又直接各种搜索,由于ef9太新,也搜不出啥东东来。

然后又建测试项目,单独测试又没问题,这个时候我就开始怀疑开始Ai给的回答了,

最终各种折腾发现问题是我用的antblazor刷新数据默认是开了线程的,重点是界面部分我也是让Ai它帮我写的。

到这里问题就解决了。

 

我想说的是,我开始问ai它给了我一个错误的回答,辛亏我了解这里,所以质疑它,但它居然再次回答时说得有理有据,我不信邪再次问他是不是ef9的版本导致的,它也说得头头是道。

如果不熟悉ef的人估计会被它带偏,对ef9会产生一种错误的认识,搞得不好还会去把老项目都重构下,浪费时间,以后发现不是ef9的问题又重构回去,再浪费一次时间。

 

所以感觉目前的Ai有个陷阱,就是让不了解某个领域的人,可以用Ai去完成那个领域的事,同时埋一堆雷在那里。

发表评论

评论已关闭。

相关文章