从数据中取值的问题

cpp_1 2021-01-24 03:07:46
我用c# winform 用的是ADO.net

我有这样一张表pc_info,表中有一个字段stauts

pcsystemEntities db = new pcsystemEntities();

private void read()
{
var pcinfo = db.pc_info.Where(x => x.pc_code == "123").ToList();

if (pcinfo.stauts ==1){
。。。。。
}

}

正常是可以从数据中读取到相对应的值 。



现在的问题是:

1。这个界面不关
2。我手工从数据库中,把status =1 ->改成status=2
3。在界面中,重新执行,查询按钮read(),界面上的到的值status还是1

我只有把这个界面关闭,重新打开后,才会加载到新值status=2,难到是我查询写的不对,还是什么
我看linq 送到数据库里面的select语句是能查到最新的值。
但在返回的时候,还是用的旧值。


我要想的结果是:
1。数据库中只要有修改,界面在不重新打开的情况下,我执行重新查询可以取到当前最新的值。
...全文
286 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shawn_yang 2021-01-28
  • 打赏
  • 举报
回复
pcsystemEntities db = new pcsystemEntities();放read函数里
cpp_1 2021-01-25
  • 打赏
  • 举报
回复
你是想说,没有取到具体哪一行的stauts 是吧 这个不是最主要的问题 主要问题是,全局DB和手工修改数据库中值,缓存的问题
Bridge_go 2021-01-25
  • 打赏
  • 举报
回复
var pcinfo = db.pc_info.Where(x => x.pc_code == "123").ToList(); if (pcinfo.stauts ==1) 你这代码不会报错???
ziqi0716 2021-01-25
  • 打赏
  • 举报
回复
缓存通常这样做是为了提高性能,即使你找到如何配置不使用缓存,那也没有啥好处,想想是不是自己的操作是否应该放到设计约束中.
ziqi0716 2021-01-25
  • 打赏
  • 举报
回复
如果没有猜错,是默认缓存了的原因.数据库连接对象为了减少IO,通常会使用缓存来将查询及结果存起来,下次查询直接给结果,不去数据库里面重复读取(因为程序本身没有修改数据库,是你在外部修改的数据库).具体如何配置我也不知道,自己查查.
郑剑1996 2021-01-25
  • 打赏
  • 举报
回复




private void  read()
{
using(pcsystemEntities db = new pcsystemEntities())
{

var pcinfo = db.pc_info.Where(x => x.pc_code == "123").ToList();

if (pcinfo.stauts ==1){
。。。。。
}
}

}




这样写,每次使用同一个数据库上下文,会读取缓存.
  • 打赏
  • 举报
回复
手工修改了数据库的值,如果界面不操作,你能做到让他通知客户端程序吗?有点复杂吧? 通常我们都是每点一次查询就查一下数据库,至于缓存,是你知道你的数据变化频率不大,最好用,如果一个结果集变化频率大, 没必要存缓存吧
cpp_1 2021-01-24
  • 打赏
  • 举报
回复
AsNoTracking(),无效果 我试了一下,每做一次查询就NEW DB,就可以实时拿到,手工对数据库内修改后的值, DB,放到全局变量里面去,就一直拿的是旧的数值。 但每一次查询NEW一个,这个好像太浪费资源了吧。 还有没有什么办法。 pcsystemEntities db ; private void read() { db= new pcsystemEntities(); var pcinfo = db.pc_info.Where(x => x.pc_code == "123").ToList(); if (pcinfo.stauts ==1){ 。。。。。 } }
楠小南 2021-01-24
  • 打赏
  • 举报
回复
那就不跟踪呗,用AsNoTracking() 这样数据就是只读的,,这样每次查询都是从数据库拿的,缺点是上下文中没有数据的记录,无法update

var pcinfo = db.pc_info.Where(x => x.pc_code == "123").AsNoTracking().ToList();

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧