在实体框架(6.1.3)的DbSet
实体集合中,添加新项目时,以后不会从集合返回。这是奇怪的和意外的。以下是一些收集的示例代码:DbSet:缺少添加项目
dbContext.Entities.ToArray();
// contains 3 entries
dbContext.Entities.Add(new Entity());
dbContext.Entities.ToArray();
// still contains 3 entries
这是怎么回事?当我在Visual Studio的直接窗口中查询dbContext.Entities
时,它会说“Local:Count = 4”。为什么它会隐藏我的新项目?
更新:如果这个集合没有做明显的事情 - 返回之前添加的东西 - 我需要做些什么呢?它首先被调用时必须返回数据库中的所有记录,并且必须在稍后调用时包含所有更改(添加和删除)。 SaveChanges
仅在用户编辑完成后调用。之前需要收集!当用户完成编辑时,SaveChanges
也可能在某个地方被调用,但代码可能会返回并在稍后再次显示该视图。
你尝试'context.Entities.Find(ID)'? – Andrei
'Entities'只是一个查询,'ToArray()'将通过从数据库中提取来实现查询(并且可能***合并一些本地缓存的结果)。在这种情况下,您的新实体不会在本地缓存以及保存到数据库,因此完全没有结果。 – Hopeless
“Local:Count = 4”输出并不表示它已被缓存?当我添加东西,而他们没有被缓存,那么他们将如何得到保存呢?保存工作正常,但我只能在程序重启后到达那里。我需要立即购买新产品。 – ygoe