RavenDB-查询错误

本文关键字:错误 查询 RavenDB- | 更新日期: 2023-09-27 18:24:59

我有一个场景,我将一个xml文档传递到我的订单构造函数中,它将解析出订单项,然后将订单保存到我的RavenDB中。我的订单保存得很好,但当我尝试查询它时,我会得到一个NullRefException。这似乎与调用我的助手方法有关,该方法解析OrderItems并将它们添加到我的Order对象中的List中。

订单:

   public class Order
    {
        public int OrderNumber { get; set; }
        public int OrderTotal { get; set; }
        public List<OrderItem> OrderItem { get; set; }
        public Order(XDocument xdoc,int orderNumber, int orderTotal)
        {
            this.OrderNumber = orderNumber;
            this.OrderTotal = orderTotal;
            GetXml(xdoc);
        }
        public void GetXml(XDocument xdoc)
        {
            List<OrderItem> orderItems = (from xml in xdoc.Descendants("OrderItem")
                                          select new OrderItem
                                          {
                                              Item = (int)xml.Element("Item"),
                                              ItemAmount = (int)xml.Element("ItemAmount")
                                          }).ToList<OrderItem>();

            OrderItem = orderItems;
        }
    }
    public class OrderItem
    {
        public int Item { get; set; }
        public int ItemAmount { get; set; }
    }

运行程序(保存并查询RavenDB):

class Program
    {
        static void Main(string[] args)
        {
            XDocument xdoc = XDocument.Parse("<Orders>" +
                                  "<Order>" +
                                    "<OrderNumber>1</OrderNumber>" +
                                    "<OrderTotal>20</OrderTotal>" +
                                    "<OrderItems>" +
                                        "<OrderItem><Item>1</Item><ItemAmount>5</ItemAmount></OrderItem>" +
                                        "<OrderItem><Item>2</Item><ItemAmount>15</ItemAmount></OrderItem>" +
                                    "</OrderItems>" +
                                  "</Order>" +
                                  "</Orders>");
            Order order = new Order(xdoc, 1, 20);
            SaveOrder(order);
            GetOrders();
            RavenConnection.Instance.CloseDocumentStore();
            Console.Read();
        }
        public static void SaveOrder(Order order)
        {
            using (var session = RavenConnection.Instance.GetDocumentStore().OpenSession())
            {
                session.Store(order);
                session.SaveChanges();
            }
        }
        public static void GetOrders()
        {
            using (var session = RavenConnection.Instance.GetDocumentStore().OpenSession())
            {
                var orders = session.Query<Order>().ToArray();
            }
        }
    }

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

这是在模拟我们拥有的一个真实的应用程序,该应用程序正在解析xml并将其存储在数据库中。。。。我本来想把它保存到RavenDB,但这个错误让我很难过。

有什么建议。。。除了改变我们解析xml和加载对象的方式之外?

--S

RavenDB-查询错误

好吧,我是个白痴。。。。只需要在我的订单中添加一个基本构造函数。。。。对不起大家。