C# 可以使用数据库上下文设置模型的属性,但尝试获取时返回null
我有这些模型C# 可以使用数据库上下文设置模型的属性,但尝试获取时返回null,c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,我有这些模型 public class Order { public string Id { get; set; } public List<ItemsOrdered> Items { get; set; } } public class ItemsOrdered { public string Id { get; set; } public Item Item { get; set; } public int Quantity { get;
public class Order
{
public string Id { get; set; }
public List<ItemsOrdered> Items { get; set; }
}
public class ItemsOrdered
{
public string Id { get; set; }
public Item Item { get; set; }
public int Quantity { get; set; }
}
public class Item
{
// some props
}
它返回订单,但是如果我想通过
order.Items
它返回null,我得到异常:
对象引用未设置为对象的实例
引发异常的原因有很多,但捕获异常将为您提供更多有关发生情况的详细信息。例如,您可能正在提取订单,但该订单可能没有与之关联的任何项目:
Order order = new Order();
List<ItemsOrdered> orderItems = new List<ItemsOrdered>();
try {
order = context.orders.First(c => c.Id = id);
orderItems = order.Items;
} catch (Exception e){
Debug.WriteLine(e.Message);
//Do what you will here...
}
订单=新订单();
List orderItems=新列表();
试一试{
order=context.orders.First(c=>c.Id=Id);
orderItems=order.Items;
}捕获(例外e){
Debug.WriteLine(e.Message);
//在这里做你想做的。。。
}
如果没有订单,那么您将有一个空列表,因此当您尝试引用它时,将抛出错误。使用类似以下内容:
order = context.orders.Include(o=> o.Items).First(c => c.Id = id);
这回答了你的问题吗?您是否启用了延迟加载或使用了include?您应该添加您使用的db技术(例如实体框架),因为tagi确实获得了订单,但问题在于特定的对象属性。带有延迟加载的注释可能会对我有所帮助
order = context.orders.Include(o=> o.Items).First(c => c.Id = id);