RavenDB - Ошибка запроса - PullRequest
       6

RavenDB - Ошибка запроса

0 голосов
/ 18 февраля 2012

У меня есть сценарий, в котором я передаю документ XML в свой конструктор заказов, и он будет анализировать элементы заказа и затем сохранять заказ в моей RavenDB. Мой заказ сохраняется нормально, но когда я пытаюсь запросить его, я получаю исключение NullRefException. Похоже, что-то связано с вызовом моего вспомогательного метода, который анализирует OrderItems и добавляет их в мой список, который находится в моем объекте Order.

Заказать:

   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

1 Ответ

0 голосов
/ 18 февраля 2012

Хорошо, я идиот .... просто нужно добавить базовый конструктор в мой Орден ... извините всех.

...