Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Import 使用带有DNN类的事务导入DotNetNuke用户_Import_Transactions_Dotnetnuke - Fatal编程技术网

Import 使用带有DNN类的事务导入DotNetNuke用户

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

我正在DNN4.9中开发一个模块来导入用户

我需要事务支持,但必须使用DNN类来导入/创建用户。开箱即用的类似乎不支持事务

我正在使用以下对象创建用户:

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中。

谢谢!在我的脑海深处,我知道这是存在的。你能更详细地解释一下范围是什么吗?这包括像文件操作这样的操作吗?我现在怎么给你赏金?看看我的最新消息。奖励将奖励您选择为“已接受”的答案。