【问题标题】:EntityFramework force globally reload before each queryEntityFramework 强制在每次查询之前全局重新加载
【发布时间】:2015-01-19 12:15:33
【问题描述】:

我的数据库中有一个 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

【问题讨论】:

  • 为每个请求使用新的上下文
  • 您是否保留了一个_db 变量并一直使用它?然后不要。 Dispose 它(最好使用 using 语句)并每次创建 DbContext 的新实例。
  • 数据上下文并非设计为长期存在的。在多个操作中重复使用它是您设计中的错误。

标签: c# asp.net database entity-framework


【解决方案1】:

您是否保留一个 _db 变量并一直使用它?然后 不。处理它(最好使用 using 语句)并创建一个新的 您的 DbContext 实例每次。

数据上下文并非设计为长期存在的。在多个操作中重用它是您设计中的错误

要解决这个问题,需要使用 using 语句:

using(DBEntities _db = new DBEntities())
{
    /* Your DB access here */
}

你可以在Do I always have to call Dispose() on my DbContext objects?找到完整的描述

【讨论】:

    猜你喜欢
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多