gpt4 book ai didi

c# - Entity Framework Core,从嵌套集合中删除项目

转载 作者:行者123 更新时间:2023-11-30 20:25:37 27 4
gpt4 key购买 nike

我有两个类(class)

 public class InvoiceRow
{
public int Id { get; set; }
public int InvoiceId { get; set; }

public int ProductId { get; set; }
public virtual Product Product { get; set; }

public int Amount { get; set; }
}



public class Invoice
{
public int Id { get; set; }
private ICollection<InvoiceRow> _rows;
public virtual ICollection<InvoiceRow> Rows => _rows ?? (_rows = new List<InvoiceRow>());
}

我在存储库类中使用更新方法

  public void Update(Invoice record)
{
dB.Invoices.Update(record);
dB.SaveChanges();
}

它适用于更新行集合中的值并添加新行,但是如果我传递的对象行数少于数据库中的行数,它不会删除项目。最好的方法是什么?

最佳答案

那是因为数据库中的行没有被标记为删除。

仅更新新的或更改的项目。集合中“缺失”的项目不会被视为已删除。

所以您需要做的是自己标记要删除的项目。像这样:

public void Update(Invoice record)
{
var missingRows = dB.InvoiceRows.Where(i => i.InvoiceId == record.Id)
.Except(record.Rows);
dB.InvoiceRows.RemoveRange(missingRows);

dB.Invoices.Update(record);
dB.SaveChanges();
}

关于c# - Entity Framework Core,从嵌套集合中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51331850/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com