【发布时间】:2015-05-20 07:37:21
【问题描述】:
我有一个实体,它链接到它周围的许多实体。这些实体仅链接回主实体。我在启动时手动“加载()”设置上下文中的每个实体(上下文在静态类中保持打开状态),我已经尝试过开启和关闭延迟加载,并且都导致相同的异常。
如果我在运行时查看核心实体(Person 实体),任何具有一个或多个相关记录的相关实体都可以正常工作。任何没有相关实体的相关记录(即 count = 0)的地方都会引发 NullReferenceException?!这是异常的堆栈跟踪:
at System.Data.Entity.Core.Objects.DataClasses.RelationshipManager.TryGetCachedRelatedEnd(String relationshipName, String targetRoleName, RelatedEnd& relatedEnd)
就是这样,这就是整个堆栈跟踪。
这是数据的屏幕截图,向您展示我的意思: “地址”之所以有效,是因为它有相关记录。 “员工”之所以有效,是因为它有相关记录。 “Employments”不起作用,因为没有记录,但它应该说 Count = 0 not null 引用异常?!
仅供参考,“ActiveHours”和“ActiveEmployments”都在“Employments”中起作用,并通过部分类添加到实体中。
抛出异常的代码是:
this.Employments.Where(employment => employment.IsActive);
当我对它进行断点时,Employs 会创建 NullReferenceException - 所以它在 Microsoft 的实体框架代码中(如堆栈跟踪中所示)。
【问题讨论】:
-
Employments的代码是什么,什么代码会抛出这个异常? -
@GertArnold 已更新帖子以显示引发异常的代码。
-
@PeterDuniho 我知道 NullReferenceException 是什么以及如何解决它,但如果我不拥有或看不到代码或找不到异常的逻辑原因,我无法解决它一世?因此,我把它放在 SO 上的原因。
标签: c# entity-framework