请教一下:我用EF Core + Sqlite开发一个winform窗体程序。现在有一个现象,比如说我有个窗体用于显示日志列表,然后有另外一个窗体,在它上面进行一个增加日志的操作,接着刷新(就是重新查询载入)日志显示窗体,却看不到任何变化,但如果关闭后重新打开这个窗体,就能看到新增加的记录,请问为什么会这样?
我怀疑可能是dbcontext的问题,于是控制了一下这两个窗体所使用的dbcontext对象,发现无论使用同一个对象(通过上下文ID判断)还是两个不同的对象,问题依旧!
望大家不吝赐教,这到底是为什么呢?
winform使EFCore不能刷新到新数据
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- PhoenixRiser 2023-07-12 17:08关注
TechWhizKid参考GPT回答:
在使用EF Core时,有一种情况可能导致你描述的问题:EF Core的缓存策略。当你查询数据库时,EF Core会在内部缓存你查询到的对象。如果你再次执行相同的查询,EF Core可能只是从内部缓存中返回对象,而不是从数据库中获取新的数据。这就是为什么你可能没有看到新添加的日志记录。
对于这个问题,一种解决方案是强制EF Core为每次查询从数据库中获取新的数据,而不是使用缓存。你可以使用
AsNoTracking()
方法来达到这个目的。这个方法会告诉EF Core不要跟踪返回的实体,也就是说,它们不会被添加到内部缓存中。
在你的日志显示窗体中,当你查询日志记录时,你可以这样做:
var logs = dbContext.Logs.AsNoTracking().ToList();
这样应该能解决你的问题。
另外,你也应该检查你的日志添加操作是否已经正确提交。当你向数据库中添加新的记录时,需要确保你已经调用了
SaveChanges()
或者SaveChangesAsync()
方法。如果你没有调用这些方法,新的记录不会被保存到数据库中。解决 1无用
悬赏问题
- ¥15 静电纺丝煅烧后如何得到柔性纤维
- ¥15 (标签-react native|关键词-镜像源)
- ¥100 照片生成3D人脸视频
- ¥15 伪装视频时长问题修改MP4的时长问题,
- ¥15 JETSON NANO
- ¥15 VS开发qt时如何在paintgl函数中用pushbutton控制切换纹理
- ¥20 关于 openpyxl 处理excel文件地问题
- ¥15 MS中不知道高分子的构型怎么构建模型
- ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
- ¥15 matlab代码 关于微分方程和嵌套的分段函数。