我想创建app模块,并希望创建多个EDMX,只需要在特定上下文中所需的表的子集。
E.g。
通过这种方式,我可以让事情变得更小,更易于管理(我认为)
但我可能需要创建一个通用模块,对多个实体执行批处理操作,可能分布在多个EDMX上。例如。合并客户端 - 将多个客户端合并到一个客户端(可能是用户多次错误地输入了相同的客户端,或者我想合并两个客户端帐户等)
为此,我想使用ServiceLocator模式
一切都很好,但我想把这一切打包在一个交易中,所以所有人都会得到保存。在单独的EDMX中,如何在一次交易中将它们打包?我应该手动创建ADO.NET事务并为所有EDMX调用objectContext.SaveChanges吗?还是有另一种更优雅的方式?
由于
答案 0 :(得分:1)
using(TransactionScope tran = new TransactionScope())
{
//do some work...
context1.SaveChanges()
context2.SaveChanges()
tran.Commit()
}
如果在处理TransactionScope之前没有提交,则事务将自动回滚。
如果MS DTC可用,上下文甚至可以在不同的sql服务器上运行。
答案 1 :(得分:0)
尝试TransactionScope课程。
您将需要必需的TransactonScopeOption。