【发布时间】:2016-01-10 09:11:54
【问题描述】:
在我的视图模型中,我正在执行以下操作。
public List<Order> Orders { get; set; }
public ViewModel()
{
using (Context context = new Context())
Orders = context.Orders
.Include(order => order.Status).ToList();
}
Order test1 = Orders.First(item => item.Status != null);
Order test2 = Orders.First(item => item.Status != null && item.Status.Id == 1);
所以我已经包含了导航属性并将它们放在那里以备将来使用。但是如果我四处张望并展开被监视的对象,我会发现状态实际上没有任何价值。它会产生以下错误。
'(test1.Status).Orders' 抛出了一个类型为 'System.ObjectDisposedException' 的异常
现在,我的理解是,如果我忘记使用 Include(),就会出现这种结果,因为实体超出了上下文的范围并被处置。但在这种情况下,它们不是,我很高兴为什么。
建议?关于我错过了什么?
在我四处寻找之后,我无法停止但有这样的印象,即包含 Status 是正确的,但它又不包含对原顺序。我对如何处理它有点困惑......
【问题讨论】:
-
您确定数据库中的项目确实有状态吗?另外,这个代码是优先的还是数据库优先的?另外,请使用 FirstOrDefault() 而不是 First()。
-
是的。我可以阅读它们。
-
试一试……终于。
-
@Konrad,你能发布你的两个实体吗?对于订单和状态。
-
@KonradViltersten 抱歉,我觉得它看起来不错,除非你的模型有问题,或者全局设置覆盖了我不知道的默认值。
标签: c# entity-framework linq include