我有一个带有Entity Framework Core 2.2.4的.NET Core 2.2项目。
我想执行以下操作:
dbset.remove
).SaveChanges()
我的问题是这样的:在第2步中,我得到的项目计数没有考虑到我刚刚删除了其中一项。我不明白为什么,因为我认为变更跟踪应该可以完成工作,因为知道其中有一项已删除(即使未保存到数据库中也是如此)。
我在整个项目中使用_ctx
作为数据库上下文。
public class Transaktion
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public ICollection<TransPosition> Positionen { get; set; }
= new List<TransPosition>();
}
public class TransPosition
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
[ForeignKey("TransaktionId")]
public Transaktion Transaktion { get; set; }
public int TransaktionId { get; set; }
}
Transaktion t = _ctx.Transaktionen.Find(entity.TransaktionId);
int counter = t.TransPositionen.Count();
//counter = 8
TransPosition pos = _dbSet.Find(Id);
_dbSet.Remove(pos);
Transaktion t = _ctx.Transaktionen.Find(entity.TransaktionId);
counter = t.TransPositionen.Count();
//STILL a count of 8
我本来希望得到7的数字,因为Find
应该具有一个已删除实体的信息。
我对此有误解吗(显然是的)?
答案 0 :(得分:0)
您如何在第2步获得计数?因为在调用SaveChanges()之前,不会提交任何内容。更改跟踪程序所做的全部工作就是跟踪更改(即,将实体标记为已删除),以便在进行SaveChanges()调用时,它知道如何处理。