我们正在扩展上下文对象以与另一个系统具有同步功能。我们目前正在进行保存更改。然而,我们意识到有一种情况是使用begintransaction和多次调用savechanges在事务状态中使用上下文。我们不希望同步数据,直到完成整个过程。我们考虑过处理上下文。
我们遇到的一个问题是知道交易是否成功。如果成功那么很好的同步。如果它被回滚,那么我们当然不想同步。在处理上下文时,我们如何知道交易的状态?
答案 0 :(得分:1)
让你的模型需要同步来实现一个接口,例如iSyncable,它承诺一旦模型成功保存就会同步。如果您通过导航属性拥有相关表,请保存所有内容并将其放入导航属性,然后再进行同步,以便同步功能具有所需的所有对象。
顺便说一句,如果您需要进行任何数据转换,那么这就是您执行此操作的地方。
答案 1 :(得分:1)
您需要在事务管理器中登记您的操作以接收与事务相关的通知。
答案 2 :(得分:0)
不要在处理方法中这样做。处置是为了清理。使用以下模式:
using (var tran = new TransactionScope())
using (var db = new MyContext())
{
db.Connection.Open();
DoWork(db);
tran.Complete();
}
这就是你需要做的一切。