2010-05-04 157 views
1

实体框架不显示数据库的最新更改,但在某段时间后显示更新的内容。我没有任何特殊的缓存在服务器或页面上。 提前致谢。 杰克 这是我用来获取列表中的代码,有问题:实体框架不显示数据库的最新更改

var m = 
    from relation in ett.Article_Relations 
    from article in ett.Article_Articles 
    from content in ett.Article_Contents 
    where relation.MenuItemID == id 
    where relation.Article_Articles.ArticleID == article.ArticleID 
    where content.LanguageID == LanguageID 
    where article.ArticleID == content.Article_Articles.ArticleID 
    select new ArticleViewModel 
    { 
     ArticleID = article.ArticleID, 
     IsActive = article.IsActive, 
     Author = article.ArticleAuthor, 
     Content = content, 
     DateCreated = article.DateCreated 
    }; 

回答

1

有什么不对您显示查询的,所以我希望你正在使用的ObjectContext比预期更长的时间。您是否在ASP.NET缓存或会话中缓存对象上下文?如果是这样,您应该为每个请求至少创建一次ObjectContext。永远不要少。

事情是,实体框架ObjectContextunit of work。它在其生命周期中缓存对象。这意味着,当您查询数据库中已存在缓存的对象时,EF将从数据库中检索该值(大部分时间),但会丢弃结果并返回缓存的对象。这可以解释为什么你没有看到更新。

+0

谢谢你的回答。它给了我一些想法问题的可能性。现在我实际上通过直接在控制器中编写代码(我的项目在MVC中)而不是调用窗体公共类来避免(但未解决)此问题。 – Jack 2010-05-06 16:08:54

相关问题