Entity framework 实体框架查询执行结果

Entity framework 实体框架查询执行结果,entity-framework,Entity Framework,我们正在考虑将实体框架用于批量上传作业。因为我们对跟踪每个记录的单独结果感兴趣,所以我试图找出是否所有插入的项都是作为事务的一部分完成的,单个故障是否会导致回滚,或者是否有方法跟踪每个单独结果的结果 我正在考虑循环遍历这些项,并在每个项上调用Save(),然后将其包装到try/catch块中,但是如果我能够利用单个结果,则在上下文上调用Save()似乎更有效 谢谢 默认情况下,每次调用SaveChanges时,所有挂起的记录都会立即保存。SaveChanges调用中的所有操作都在事务()中,因此

我们正在考虑将实体框架用于批量上传作业。因为我们对跟踪每个记录的单独结果感兴趣,所以我试图找出是否所有插入的项都是作为事务的一部分完成的,单个故障是否会导致回滚,或者是否有方法跟踪每个单独结果的结果

我正在考虑循环遍历这些项,并在每个项上调用Save(),然后将其包装到try/catch块中,但是如果我能够利用单个结果,则在上下文上调用Save()似乎更有效


谢谢

默认情况下,每次调用
SaveChanges
时,所有挂起的记录都会立即保存。
SaveChanges
调用中的所有操作都在事务()中,因此,如果某个特定的SaveChanges调用失败,它将回滚该特定调用中的查询,但显然不是以前成功的调用

最终,它取决于您在哪里调用SaveChanges,以及您将获得多少回滚。您可以使用
TransactionScope
扩展事务的长度,有关如何扩展范围的示例,请参阅

我自己的经验是,过于频繁地调用SaveChanges实际上会降低性能,并大大降低整个过程的速度。但显然,等待时间过长可能意味着内存占用更大。我发现EF可以轻松地处理数千行,而不会有太多内存问题

将代码放在try…catch中会对您有所帮助,但您可能希望查看实体验证,因为您可以对对象进行限制,然后在生成任何SQL之前对对象进行验证