C# 导航对象为空;为什么?
我有一个客户和一个订单表格。订单表包含一个CustomerId字段,该字段指向Customer.Id列。我正在使用以下命令检索订单C# 导航对象为空;为什么?,c#,linq,entity-framework,foreign-key-relationship,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。我做错了什么
var order = (from a in context.Order
where a.id == OrderId select a).FirstOrDefault();
还有另一个审核表也有CustomerId列。我正在审计表中创建一个条目,并希望从上面的查询获取的订单中更新CustomerId,但是,order.customer对象为null。我做错了什么?以下是解决方案:
var order = (from a in context.Order
where a.id == OrderId select a).FirstOrDefault();
var customer = context.Customer.Find(order.CustomerId);
以下是解决方案:
var order = (from a in context.Order
where a.id == OrderId select a).FirstOrDefault();
var customer = context.Customer.Find(order.CustomerId);
要包含您的客户数据,您需要包含如下代码所示的表格
var order = (from a in context.Order
where a.id == OrderId select a)
.Include(b => b.Customer)
.FirstOrDefault();
然而,订单和客户之间需要有一个链接才能正常工作。要包含您的客户数据,您需要包含如下代码所示的表格
var order = (from a in context.Order
where a.id == OrderId select a)
.Include(b => b.Customer)
.FirstOrDefault();
然而,订单和客户之间需要有一个链接才能起作用。我猜您的
订单
实体上有一个客户
导航属性,带有客户ID
字段。您需要使用Include
功能明确加载Customer
实体
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...
}
我猜您的
订单
实体上有一个客户
导航属性,该属性带有客户ID
字段。您需要使用Include
功能明确加载Customer
实体
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...
}
是否确定上下文中存在id==OrderId的订单。订单?请检查
OrderId
的值,并检查以确保实际存在id由OrderId
指定的订单。第二部分是使用数据库工具,而不是实体框架。你只是让EF来做这件事,还是使用DataAnnotations或FluentAPI?这是因为它很懒散。将其更改为WangeLoading。Customer为null,因为您仅从订单中提取。如果需要客户数据,则需要包括customer表。是否确定上下文中存在id==OrderId的订单。订单?请检查OrderId
的值,并检查以确保实际存在id由OrderId
指定的订单。第二部分是使用数据库工具,而不是实体框架。你只是让EF来做这件事,还是使用DataAnnotations或FluentAPI?这是因为它很懒散。将其更改为WangeLoading。Customer为null,因为您仅从订单中提取。如果需要客户数据,则需要包括客户表。+1。如果它仍然返回null
您最好检查实体本身。请记住,FirstOrDefault()
如果找不到任何内容,则返回null
。实际上,Include不是您在上述语法中放置的选项。但是,我可以使用@DaveB在其回复中建议的Include after context.Order.+1。如果它仍然返回null
您最好检查实体本身。请记住,FirstOrDefault()
如果找不到任何内容,则返回null
。实际上,Include不是您在上述语法中放置的选项。但是,我可以使用@DaveB在其回复中建议的Include after context.Order。