我在我的案例中有3個實體。發票,InvoiceDetail和Item。 發票具有一個InvoiceDetail集合。每個InvoiceDetail都有一個Item。在最近添加的記錄中檢索導航屬性的數據
請參閱下面的代碼:
var ctx = new TestEntities();
var newInvoice = new Invoice
{
CreationDate = DateTime.Now,
UserId = 14
};
newInvoice.InvoiceDetails.Add(new InvoiceDetail
{
ItemId = 345,
ItemCount = 10
});
newInvoice.InvoiceDetails.Add(new InvoiceDetail
{
ItemId = 534,
ItemCount = 10
});
ctx.Invoices.Add(newInvoice);
ctx.SaveChanges();
// workaround
// ctx.Items.ToList();
foreach (var i in newInvoice.InvoiceDetails)
{
// In this line I get NullReferenceException
Console.WriteLine(i.Item.Title);
}
我得到的NullReferenceException時,我想檢索每個InvoiceDetail的項目數據。
問題解決了,當我取消註釋,評論部分代碼。 (ctx.Items.ToList())
UPDATE 1:
而且也是這種Item類:
public partial class Item
{
public Item()
{
this.InvoiceDetails = new HashSet<InvoiceDetail>();
}
public long Id { get; set; }
public string Title { get; set; }
public virtual ICollection<InvoiceDetail> InvoiceDetails { get; set; }
}
更新2:
public partial class InvoiceDetail
{
public long Id { get; set; }
public long InvoiceId { get; set; }
public long ItemId { get; set; }
public int ItemCount { get; set; }
public virtual Invoice Invoice { get; set; }
public virtual Item Item { get; set; }
}
我們可以看看你的'Item'類(其他人可能也不會受傷)嗎? – Chris
對不起,我的意思是'InvoiceDetail',雖然兩者都有用,但我的不好。 – Chris
@Chris我在我的代碼中添加了2個更新。 –