【问题标题】:Entity Framework does not display the last change from the database实体框架不显示数据库的最后一次更改
【发布时间】:2010-05-04 10:15:10
【问题描述】:

Entity Framework 不会显示来自数据库的最后更改,但会在一段时间后显示更新的内容。我在服务器或页面上没有任何特殊缓存。 预先感谢。 杰克 这是我用来获取列表的代码,但有问题:

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
    };

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答。它让我知道问题可能出在哪里。现在我实际上通过直接在控制器中编写代码(我的项目在 MVC 中)而不是从公共类中调用来避免(但没有解决)这个问题。
    猜你喜欢
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多