Import 使用带有DNN类的事务导入DotNetNuke用户
我正在DNN4.9中开发一个模块来导入用户 我需要事务支持,但必须使用DNN类来导入/创建用户。开箱即用的类似乎不支持事务 我正在使用以下对象创建用户:Import 使用带有DNN类的事务导入DotNetNuke用户,import,transactions,dotnetnuke,Import,Transactions,Dotnetnuke,我正在DNN4.9中开发一个模块来导入用户 我需要事务支持,但必须使用DNN类来导入/创建用户。开箱即用的类似乎不支持事务 我正在使用以下对象创建用户: UserController.CreateUser(ref UserInfo) ... 因为我正在改进一个现有的模块,完全重写/改变导入方式不是一个选项。与直接使用SQL语句创建用户类似我不是DNN用户,但在CLR事务的上下文中,任何ADO.Net操作都会自动注册到事务中: using(TransactionScope scope = ne
UserController.CreateUser(ref UserInfo) ...
因为我正在改进一个现有的模块,完全重写/改变导入方式不是一个选项。与直接使用SQL语句创建用户类似我不是DNN用户,但在CLR事务的上下文中,任何ADO.Net操作都会自动注册到事务中:
using(TransactionScope scope = new TransactionScope(
TransactionScopeOption.Required))
{
UserController.CreateUser(ref UserInfo)
...
scope.Complete();
}
除非某些DNN代码通过使用选项superss创建新的作用域来明确禁用事务作用域,否则实际的数据库工作将注册到适当的事务中,例如,任何SqlClient操作都将注册到SqlTransaction中
更新
事务作用域是与当前线程关联的上下文对象。一旦创建,.Net组件,检查它是否存在,就会找到它并知道它们必须参与事务
文件操作无法注册到事务作用域,因为基础文件系统至少在Win7之前不支持事务。SQL Server提供程序、Oracle提供程序、MSMQ访问器和其他支持事务的.Net组件等组件将启动事务并将其添加到当前作用域。当作用域为“完成”时,将提交等效的SqlTransaction。如果作用域“ends”即调用其Dispose方法,因为它到达using块的末尾但未“complete”,则SqlTransaction将回滚
如果多个组件在单个事务范围中注册,则它们将成为分布式事务的一部分。在事务范围下使用两个单独的连接就可以实现这一点。ADO.Net将自动将它们注册到true中。谢谢!在我的脑海深处,我知道这是存在的。你能更详细地解释一下范围是什么吗?这包括像文件操作这样的操作吗?我现在怎么给你赏金?看看我的最新消息。奖励将奖励您选择为“已接受”的答案。