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
LOL。編程有時候很有趣... – 2012-02-18 23:47:24