Asp.net mvc 4 联合WebSecurity.CreateUser和DbContext操作升级到DTC
最近我遇到了一个小故障,当时我试图用一个事务来结束一些涉及WebSecurity和DbContext的操作 在我的Asp.net MVC 4应用程序中,我尝试通过以下方式注册新用户:Asp.net mvc 4 联合WebSecurity.CreateUser和DbContext操作升级到DTC,asp.net-mvc-4,entity-framework-5,simplemembership,msdtc,Asp.net Mvc 4,Entity Framework 5,Simplemembership,Msdtc,最近我遇到了一个小故障,当时我试图用一个事务来结束一些涉及WebSecurity和DbContext的操作 在我的Asp.net MVC 4应用程序中,我尝试通过以下方式注册新用户: var transactionOptions = new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted, Timeout = TransactionManager.MaximumTimeout }; using
var transactionOptions = new TransactionOptions
{
IsolationLevel = IsolationLevel.ReadCommitted,
Timeout = TransactionManager.MaximumTimeout
};
using (var transactionScope = new TransactionScope(TransactionScopeOption.Required, transactionOptions))
{
var confirmationToken = WebSecurity.CreateUserAndAccount(
vm.Email,
vm.Password,
new
{
AccountCreationDate = DateTime.Now,
City = vm.City,
(...)
},
true);
Roles.AddUserToRole(vm.Email, "Client");
// Some other job on DbContext in Repository
var userRepository = new UserRepository();
userRepository.AssignData(vm.Email);
transactionScope.Complete();
}
如您所见,我正在尝试创建一个用户帐户和成员条目,分配一个角色,然后通过存储库在EF5 DbContext上执行一些额外的操作
这段代码被包装在一个try-catch块中,为了简洁起见,这里不包括它
我的问题来了:是否有可能将所有这3次点击都打包到数据库中(分别通过WebSecurity、Roles和Repository),而不让它升级到DTC
我使用的是SQL Server 2012,一个DB和相同的连接字符串(如果有帮助的话)