我的数据库中有 DBEntities.edmx
。在我的一个类中,我使用:
DBEntities _db = new DBEntities()
现在是我的问题,在查询后,EF缓存解决方案,如果数据库中的一个值发生更改, .edmx
将使用缓存的旧值。
我找到了两个解决方法:
1:_db.tbl_user.AsNoTracking().Where(x=>x.ID == _ID)
2:重新创建DBEntities:_db = new DBEntities()
但我想知道是否有可能全局强制,如果值已更改,EF会更新DBEntities
答案 0 :(得分:0)
你保留一个_db变量并一直使用它吗?然后 别。处理它(最好使用using语句)并创建一个新的 每次都是你的DbContext的实例。
数据上下文并非设计为长期存在。在多个操作中重复使用它是您设计中的一个错误
要解决此问题,需要使用using语句:
using(DBEntities _db = new DBEntities())
{
/* Your DB access here */
}
您可以在Do I always have to call Dispose() on my DbContext objects?
上找到完整说明