Entity framework 跨多个SaveChanges的实体框架事务

Entity framework 跨多个SaveChanges的实体框架事务,entity-framework,wcf,transactions,unity-container,entity-framework-6.1,Entity Framework,Wcf,Transactions,Unity Container,Entity Framework 6.1,我正在创建一个使用WCF 4.5、EF 6.1、Unity 3.5和Unity3.WCF 3.5的应用程序 应用程序需要每月运行一个流程,检查上月发生的更改,并为审批流程创建记录 此过程将由对WCF服务方法的调用触发 这是基本逻辑: Get collection of Things For each Thing: Get collection of ThingChanges Calculate changed Amount Create New ThingAppr

我正在创建一个使用WCF 4.5、EF 6.1、Unity 3.5和Unity3.WCF 3.5的应用程序

应用程序需要每月运行一个流程,检查上月发生的更改,并为审批流程创建记录

此过程将由对WCF服务方法的调用触发

这是基本逻辑:

Get collection of Things

For each Thing:

    Get collection of ThingChanges

    Calculate changed Amount

    Create New ThingApproval

    Update each ThingChange in ThingChanges with ThingApproval.ID
现在,据我所知,为了获得ThingApproval.ID,我需要在创建新ThingApproval后进行保存更改,这将使用DB中的ID进行填充。然后,我需要在每次更新之后或在for each完成后再保存一次更改,以提交所有更新

如果此过程的任何部分失败,它需要回滚所有更改,返回到第一次保存更改之前


如何实现这一点?

我最终实现了一个包,该包提供了对DB上下文的完全控制,包括事务性。

可能重复的@GertArnold没有明确回答我的问题,因为它没有考虑我对DI/IoC的使用-我没有明确创建任何scope@GertArnold事实上我刚刚读了第二个答案,这似乎很合适。@GertArnold实际上没有帮助-我的上下文保存在一个存储库类中,该存储库类由应用程序类调用,因此它无权访问上下文来设置事务。我没有显式创建任何作用域。不,这就是重点。您应该将所有内容包装在using TransactionScope块中,如接受答案中所示。