问题。在注册场景中,我试图在我的用户表中插入一个用户,然后调用WebSercurity.CreateAccount
该用户(在事务中)。这会导致服务器上没有 MS DTC 的错误。
描述。我这样做的原因是因为我有一个Customer
继承自的实体User
,所以WebSercurity.CreateUserAndAccount
不能使用,因为它不知道Customer
并且只是插入一条User
记录。
我将 Asp.net MVC 4 与 EntityFramework 5、CodeFirst 和 SQL Server 2008 R2 一起使用。
任何不使用 DTC 的建议将不胜感激!
编辑。
发生此错误的原因很明显,因为 websecurity 使用它自己的数据库连接,而我的存储库使用另一个连接,虽然我已将 simplemembership 配置为使用与DbContext
我的存储库相同的类,但问题是它创建了一个新的实例DbContext
... _
我希望是否有一种方法可以传递现有的上下文对象,或者WebSecurity
与它的方法一起使用的连接。
这是代码:
if (ModelState.IsValid)
{
//using (TransactionScope tx = new TransactionScope())
//{
UnitOfWork.UserRepository.Insert(new Customer
{
FirstName = model.FirstName,
LastName = model.LastName,
Email = model.Email,
Tel = model.Tel,
Mobile = model.Mobile,
BirthDate = model.BirthDate,
InsertDate = DateTime.Now,
UserType = UserType.Customer,
MaritalStatus = model.MaritalStatus,
ZipCode = model.ZipCode,
StreetAddress = model.StreetAddress,
City = model.City,
State = model.State
});
UnitOfWork.Commit();
string token = WebSecurity.CreateAccount(model.Email, model.Password, true);
Roles.AddUserToRole(model.Email, "Customer");
//WebSecurity.Login(model.Email, model.Password, true);
await Task.Run(() => EmailHelper.SendConfrimationEmail(token, model.Email));
// tx.Complete();
//}