c# - 可以使用数据库上下文设置模型的属性,但尝试获取它时返回 null
问题描述
我有这些模型
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
}
我可以使用数据库上下文设置数据库中的数据,我可以查看 mysql 数据库中的数据,我可以使用
var order = context.Orders.First(c => c.Id == id)
它返回订单,但是如果我想通过以下方式获取订单的项目列表
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...
}
如果没有订单,那么您将有一个空列表,因此当您尝试引用它时会抛出错误。