【发布时间】:2021-03-25 10:57:47
【问题描述】:
我有以下课程:
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>();
}
}
和:
public class Invoice_item
{
[Key]
public Guid Invoice_itemID { get; set; }
public string Description{ get; set; }
public int Price { get; set; }
public int qty { get; set; }
public Invoice_item()
{
Invoice_itemID = Guid.NewGuid();
}
}
它工作正常。我可以编辑这个模型。 控制器:...
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_item”列表的元素。当我想将一个项目添加到附加到“发票”记录的“发票项目”列表中时,就会出现问题。
请帮忙。
【问题讨论】:
-
你得到的错误是什么?您能提供有关例外情况的任何详细信息吗?
-
DbUpdateConcurrencyException:数据库操作预计会影响 1 行,但实际上影响了 0 行
-
这个问题是关于
ChangeTracker的,你可以在entityframeworktutorial.net/efcore/…链接上阅读 -
您的
Invoice_item实体是否设置了主键? -
是的。 Guid Invoice_itemID 是 Key
标签: c# asp.net asp.net-mvc asp.net-core-mvc asp.net-core-3.0