导航对象为空;为什么?

时间:2013-12-13 21:23:04

标签: c# linq entity-framework foreign-key-relationship

我有一个客户和一个订单表。订单表包含 CustomerId 字段,该字段指向 Customer.Id 列。我正在使用以下

检索订单
var order = (from a in context.Order 
where a.id == OrderId select a).FirstOrDefault();

还有另一个审核表,其中也包含CustomerId列。我正在审计表中创建一个条目,并希望从上面的查询获得的订单更新CustomerId,但是,order.customer对象为null。我做错了什么?

3 个答案:

答案 0 :(得分:3)

要包含您的客户数据,您需要包含以下代码的表格。

var order = (from a in context.Order 
             where a.id == OrderId select a)
                                    .Include(b => b.Customer)
                                    .FirstOrDefault();

然而,Order和Customer之间需要有一个链接才能正常工作。

答案 1 :(得分:3)

我猜您的Customer实体上有一个Order导航属性,其中CustomerID字段。您需要使用Customer函数明确加载Include实体。

var order = (from a in context.Order.Include("Customer") 
where a.id == OrderId select a).FirstOrDefault();

// Check if the result is null
if(order != null)
{
    /// Do stuff...
}

答案 2 :(得分:0)

这是解决方案:

var order = (from a in context.Order 
where a.id == OrderId select a).FirstOrDefault();
var customer = context.Customer.Find(order.CustomerId);
相关问题