2012-02-18 2 views
0

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

Заказ:

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

Run Program (Сохранить и запросов 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

ответ

0

Ok Я идиот .... просто нужно добавить базовый конструктор для моего заказа .... жаль всех.

+0

LOL. Иногда программирование забавно ... –

Смежные вопросы