我有一個具有屬性的發票物件,其中包括一個客戶端物件和一個專案串列。我的目標是從資料庫中檢索發票串列,但每次我這樣做時,發票都會回傳分配給其客戶物件和專案串列的空參考。我的資料模型有問題嗎?
這是我的資料模型:
public class Invoice
{
public string InvoiceId { get; set; } = GenerateID.GenerateInvoiceID();
public string Description { get; set; }
public List<InvoiceItem> Items { get; set; }
public DateTime InvoiceDate { get; set; }
public string PaymentTerms { get; set; }
public DateTime PaymentDue { get; set; }
public int TotalPrice { get; set; }
public string Status { get; set; } = "pending";
public Client Client { get; set; }
public string BillFromAddress { get; set; }
public string BillFromCity { get; set; }
public string BillFromCountry { get; set; }
public string BillFromPostal { get; set; }
}
public class Client
{
public string ClientId{ get; set; } = GenerateID.GenerateClientID();
[Required]
public string ClientName { get; set; }
[Required]
public string ClientEmail { get; set; }
[Required]
public string ClientAddress { get; set; }
[Required]
public string ClientCity { get; set; }
[Required]
public string ClientCountry { get; set; }
[Required]
public string ClientPostal { get; set; }
}
public class InvoiceItem
{
public string InvoiceItemId { get; set; } = GenerateID.GenerateItemID();
public string InvoiceId { get; set; }
[Required]
public string Name { get; set; }
[Required]
public int Quantity { get; set; }
[Required]
public int Price { get; set; }
public InvoiceItem()
{
}
public InvoiceItem(string itemName, int quantity, int price)
{
Name = itemName;
Quantity = quantity;
Price = price;
}
}
以下是添加和檢索發票的服務:
public async void AddInvoice(InputModel input)
{
Invoice invoice = new Invoice();
invoice.Description = input.Description;
invoice.Items = input.Items;
invoice.InvoiceDate = input.InvoiceDate;
invoice.PaymentTerms = input.PaymentTerms;
invoice.Client = input.Client;
invoice.BillFromAddress = input.BillFromAddress;
invoice.BillFromCity = input.BillFromCity;
invoice.BillFromCountry = input.BillFromCountry;
invoice.BillFromPostal = input.BillFromPostal;
//Attaching the invoice id to each item in the invoice
foreach (var item in invoice.Items)
{
item.InvoiceId = invoice.InvoiceId;
}
_context.Add(invoice);
await _context.SaveChangesAsync();
}
public async Task<List<Invoice>> GetInvoices()
{
return await _context.Invoices.ToListAsync();
}
這是 DbContext 類:
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
public DbSet<Invoice> Invoices { get; set; }
}
以下是資料庫中的記錄:



uj5u.com熱心網友回復:
為了能夠查詢相關物體,例如Client,InvoiceItemof Invoice,您需要預先加載。
public async Task<List<Invoice>> GetInvoices()
{
return await _context.Invoices
.Include(x => x.Client)
.Include(x => x.Items)
.ToListAsync();
}
參考
急切加載
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/451656.html
