2012-02-18 84 views
0

我有一個場景,我將xml文檔傳入我的Order構造函數,它將解析出訂單項,然後將訂單保存到我的RavenDB。我的訂單保存得很好,但是當我嘗試查詢它時,我得到一個NullRefException。這似乎與調用我的幫助器方法解析OrderItems並將它們添加到我的Order對象中的List中有關。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; } 
    } 

運行程序(保存和查詢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

好吧我是一個白癡....只是需要一個基類的構造添加到我的訂單....對不起大家。

+0

LOL。編程有時候很有趣... – 2012-02-18 23:47:24