首页 > 解决方案 > 可以使用数据库上下文设置模型的属性,但尝试获取它时返回 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,我得到了异常:

对象引用未设置为对象的实例。

标签: c#asp.net-coreentity-framework-core

解决方案


抛出异常的原因有很多,但捕获异常将为您提供有关正在发生的事情的更多详细信息。例如,您可能正在拉取一个订单,但该订单可能没有与之关联的任何商品:

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...
}

如果没有订单,那么您将有一个空列表,因此当您尝试引用它时会抛出错误。


推荐阅读