是否有任何特殊原因将项目添加到 EF4.1 集合、将其保存到数据库然后再次选择该集合会产生奇怪的结果?
当我进行初始加载时,集合中的所有项目都是 type System.Data.Entity.DynamicProxies.MyClassName_LongString
,因此集合上的以下选择有效:
var y = MyCollection.Where(x => x.ValidTo == null).First();
是的,集合中总有一个项目满足该标准。总是。
但是,如果我选择集合,向其中添加新项目,保存更改,然后在同一上下文中再次选择集合,集合中的最后一项(新的)不是动态代理,而是我的 POCO 类型 ( Moo.Model.MyClassName
)。
在该版本的集合上从上面执行相同的选择会引发空引用异常 - 即使最后一项(非动态代理项)确实符合标准,我已经通过手动观看集合来确认...
更改后从另一个上下文加载集合,并且行为不会自行显示 - 它们都是动态代理,并且选择有效。
有谁知道是什么导致了这种行为?