Pra*_*ika -2 c# linq entity-framework
我想在点击某个按钮时根据某些条件删除一些记录.仅删除这些记录后,我将插入新数据.
dbContext.AdviserFeeDetailReports.AsEnumerable().ToList()
.RemoveAll(x => x.PracticeId == superFund.CompanyID
&& x.SuperFundId == superFund.SuperFundId);
dbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我想知道它为什么不删除表中的相关记录.没有异常引发,上面两行被执行.但是记录仍然存在于DbContext和数据库中.
Zor*_*vat 15
您要从列表中删除,而不是从列表中删除AdviserFreeDetailReports
.此外,调用AsEnumerable()
并将ToList()
从数据库中拉出整个表并将数据放在一个单独的列表中,这是你想要的吗?
我相信你的代码会更有效:
var toRemove = dbContext.AdviserFeeDetailReports
.Where(x =>
x.PracticeId == superFund.CompanyID &&
x.SuperFundId == superFund.SuperFundId);
dbContext.AdviserFreeDetailReports.RemoveRange(toRemove);
dbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
此实现仅提取您计划删除的对象,并DbContext
开始跟踪它们.调用RemoveRange
将标记每个对象以进行删除.最后,SaveChanges
将发出DELETE
最终将从数据库表中删除所有选定对象的语句.