实体框架使用一次性上下文返回旧数据

时间:2017-09-27 14:16:08

标签: c# wpf entity-framework linq

这是我第一次看到这个问题。

考虑我的存储库方法:

public async Task<List<Code>> GetAllByType(string type)
{
    using (var ctx = new DatabaseContext())
    {
        return await ctx.Codes.Where(code => code.Type.Equals(type)).ToListAsync();
    }
}

这是我在尝试为我的视图创建可观察集合时偶然发现的问题,该集合是根据上述方法的结果创建的。如此:

Types = new ObservableCollection<Code>(await CodeRepository.GetAllByType("TestType"));

即使我使用的是一次性上下文,每次进行查询时,存储库都会返回旧数据。我手动编辑了一些以"TestType"为列值的条目,它仍然是未更改的旧数据。我添加了3个新条目, not found

是的,我的数据库中有条目。数据库不区分大小写,我尝试了所有组合,无论我做什么 - 实体框架上下文仍然返回旧数据。

以前有人遇到过这个问题吗?

提前致谢!

2 个答案:

答案 0 :(得分:2)

您可能正在编辑错误的数据库。请仔细检查您的连接字符串,并确保您正在编辑应用程序实际连接的字符串。

答案 1 :(得分:1)

这不是您的情况,但如果将Context声明为静态属性,则EF可以返回旧数据。例如:

public MyController : Controller {
    public static DatabaseContext Db = new DatabaseContext();
}