EF Code First:如何在SaveChanges之前选择包含更改的数据?

时间:2014-11-27 16:25:54

标签: ef-code-first

我无法解释代码。看看不同的行为:

        var project = DB.Project.Find(1000111);
        project.MustLinkToMF = false;

        // Includes id = 1000111; MustLinkToMF = false; - From Cache?
        var projects1 = DB.Project.Select(p => p).ToList();

        // Doesn't contain 1000111! - Not From Cache?
        var projects2 = DB.Project.Where(p => p.MustLinkToMF == false).Select(p => p).ToList();

        DB.SaveChanges();

如何获取缓存数据,包括我的更改? 如何在 SaveChanges之前使用一个简单的查询获取项目2? 谢谢!

1 个答案:

答案 0 :(得分:0)

您可以浏览第一级缓存中的实体:

ctx.ChangeTracker.Entries().Where(x => x.State == EntityState.Modified).Select(x => x.Entity).OfType<T>()

只需将EntityState.Modified替换为您想要的内容即可。 请在此处查看示例:https://weblogs.asp.net/ricardoperes/entity-framework-code-first-get-entities-from-local-cache-or-the-database