C# 数据库和内存任务之间的事务?
我想在数据库中做一些工作,然后在内存中做一些任务(比如更改对象的一些值),我想在同一事务中合并这两个任务 我使用的是EF4.1,它只为我提供了SaveChanges方法,它可以自己进行事务处理。只要SaveChanges不抛出异常,我就可以在内存上执行一些任务。这是一个解决办法。但它破坏了应用程序的体系结构。因为在该任务之前不会调用SaveChanges。当调用任务时,它无法知道SaveChanges将来是否成功 是否可以在数据库和内存任务之间进行任何事务C# 数据库和内存任务之间的事务?,c#,.net,transactions,C#,.net,Transactions,我想在数据库中做一些工作,然后在内存中做一些任务(比如更改对象的一些值),我想在同一事务中合并这两个任务 我使用的是EF4.1,它只为我提供了SaveChanges方法,它可以自己进行事务处理。只要SaveChanges不抛出异常,我就可以在内存上执行一些任务。这是一个解决办法。但它破坏了应用程序的体系结构。因为在该任务之前不会调用SaveChanges。当调用任务时,它无法知道SaveChanges将来是否成功 是否可以在数据库和内存任务之间进行任何事务 如果是这样的话,我们如何做到这一点 J
如果是这样的话,我们如何做到这一点 Juval Lowy在MSDN中有一篇名为“解释如何围绕内存类型创建事务包装”的优秀文章 在其核心,您希望实现。一旦为要成为事务一部分的内存中类型实现了此功能,就必须通过调用来注册实例,以便对事务进行通知 通常,您可以通过查看static是否为null来调用
inclustevolatile
,如果不为null,则向该static注册(例如,这是中的类为了自注册所做的事情)
但是,一旦知道事务
已就绪(例如,在创建实例之后),就可以在任何地方登记实例
如果不想进行上述操作,还可以订阅,并根据通过传递给事件处理程序的返回的事务的状态更改内存变量的状态
您可以通过事务
上的获取a。TransactionInformation
类具有一个从返回的值,该值指示事务的状态(已提交、已中止等)