C# 如何使用实体框架、存储库、工作单元和事务结构服务和业务层

C# 如何使用实体框架、存储库、工作单元和事务结构服务和业务层,c#,entity-framework,transactionscope,unit-of-work,service-layer,C#,Entity Framework,Transactionscope,Unit Of Work,Service Layer,我有一个服务层,它向业务层发出执行某些功能的请求。 业务层访问使用实体框架的存储库。 服务层有一个工作单元对象,它维护对EF的ObjectContext的引用。 当业务层被调用时,服务层告诉工作单元保存它在事务中所做的更改 这一切都很好,我能够让多个存储库在一个事务中与多个edmx文件通信 系统中的规则之一是EF内容必须保留在存储库层(UoW中的上下文除外) 但我的设计有一个重大缺陷 在业务层的函数中,我想调用respository函数在数据库中创建新记录。然后,在业务层的同一个函数中,我想将另

我有一个服务层,它向业务层发出执行某些功能的请求。 业务层访问使用实体框架的存储库。 服务层有一个工作单元对象,它维护对EF的ObjectContext的引用。 当业务层被调用时,服务层告诉工作单元保存它在事务中所做的更改

这一切都很好,我能够让多个存储库在一个事务中与多个edmx文件通信

系统中的规则之一是EF内容必须保留在存储库层(UoW中的上下文除外)

但我的设计有一个重大缺陷

在业务层的函数中,我想调用respository函数在数据库中创建新记录。然后,在业务层的同一个函数中,我想将另一条记录指向新记录。EF实体对于业务层不可用,并且因为它还没有返回到服务层,所以我没有新记录的id,我可以用它更新其他记录


有没有关于如何更改设计以支持此功能的建议?

Yes@user207034。我能够在存储库中的上下文上调用SaveChanges(),然后访问新创建的EF实体的uniqueId。然后我可以在同一个UoW中使用它,并对事务调用Commit或Abort使其永久化。GistHub中有关于gist的源代码示例吗?