C# 具有列表对象的ASP.NET Core 3.0 MVC更新模型-添加对象
我有以下课程:C# 具有列表对象的ASP.NET Core 3.0 MVC更新模型-添加对象,c#,asp.net,asp.net-mvc,asp.net-core-mvc,asp.net-core-3.0,C#,Asp.net,Asp.net Mvc,Asp.net Core Mvc,Asp.net Core 3.0,我有以下课程: public class Invoice { [key] public Guid InvoiceID { get; set; } public string Name { get; set; } public List<Invoice_item> Invoice_items { get; set; } public Invoice() { InvoiceID = Guid
public class Invoice
{
[key]
public Guid InvoiceID { get; set; }
public string Name { get; set; }
public List<Invoice_item> Invoice_items { get; set; }
public Invoice()
{
InvoiceID = Guid.NewGuid();
Invoice_items = new List<Invoice_item>();
}
}
它很好用。我可以编辑这个模型。
控制员:
Invoice invoice = await _context.Invoice.Include(i => i.Invoice_items).Where(x => x.InvoiceID == id).FirstOrDefaultAsync();
invoice.Name = "2020/122";
invoice.Invoice_items[0].Description = "Some name";
invoice.Invoice_items[0].Price = 1;
invoice.Invoice_items[0].qty = 1;
_context.Update(invoice);
await _context.SaveChangesAsync();
// WORK OK
Invoice invoice = await _context.Invoice.Include(i => i.Invoice_items).Where(x => x.InvoiceID == id).FirstOrDefaultAsync();
invoice.Name = "2020/122";
invoice.Invoice_items[0].Description = "Description 1";
invoice.Invoice_items[0].Price = 1;
invoice.Invoice_items[0].qty 1;
Invoice_item item = new Invoice_item()
{
Description = "Description 2",
Price = 2,
qty = 2
};
invoice.Invoice_items.Add(item); // PROBLEM
_context.Update(invoice);
await _context.SaveChangesAsync();
但问题是,当我想在列表中添加一个项目时:
控制员:
Invoice invoice = await _context.Invoice.Include(i => i.Invoice_items).Where(x => x.InvoiceID == id).FirstOrDefaultAsync();
invoice.Name = "2020/122";
invoice.Invoice_items[0].Description = "Some name";
invoice.Invoice_items[0].Price = 1;
invoice.Invoice_items[0].qty = 1;
_context.Update(invoice);
await _context.SaveChangesAsync();
// WORK OK
Invoice invoice = await _context.Invoice.Include(i => i.Invoice_items).Where(x => x.InvoiceID == id).FirstOrDefaultAsync();
invoice.Name = "2020/122";
invoice.Invoice_items[0].Description = "Description 1";
invoice.Invoice_items[0].Price = 1;
invoice.Invoice_items[0].qty 1;
Invoice_item item = new Invoice_item()
{
Description = "Description 2",
Price = 2,
qty = 2
};
invoice.Invoice_items.Add(item); // PROBLEM
_context.Update(invoice);
await _context.SaveChangesAsync();
编辑“发票”记录时,可以编辑记录的所有元素以及附加到其上的“发票项目”列表的元素。当我想将一个项目添加到“发票”记录所附的“发票项目”列表时,就会出现问题
请提供帮助。您只需在您的
项目中添加发票\u itemID
,如下图所示更改代码
Invoice_item item = new Invoice_item()
{
//add this line.
Invoice_itemID = new Guid(),
Description = "Description 2",
Price = 2,
qty = 2
};
你的错误是什么?您可以提供有关异常的详细信息吗?DbUpdateConcurrencyException:数据库操作预期会影响1行,但实际影响0行。此问题与ChangeTracker
有关,您可以在链接上阅读您的Invoice\u项目
实体是否设置了主键?是。Guid发票\u itemID是密钥