SimpleMembership - 创建交易的正确方法

时间:2013-09-29 00:35:07

标签: asp.net-mvc entity-framework-4 simplemembership

民间,

Envrionment:ASP.NET MVC 4,Razor

我正在为我的网络应用程序使用SimpleMembership提供程序。当用户请求注册时,我需要调用WebSecurity.CreateUserAndAccount并更新其他一些表。整个操作必须是交易性的。这就是我的想法:

using (UsersContext ctx = new UsersContext()) {
    using (TransactionScope scope = new TransactionScope()) {

        // The following call creates its own context but will call ctx.SaveChanges() internally
        WebSecurity.CreateUserAndAccount(...);

        // update some other tables using ctx
        ...

        ctx.SaveChanges();

        scope.complete();
    }
}

我觉得这应该有效。但是,我想就是否有更好的方法得到你的专家意见。

提前感谢您的帮助。

的问候,
彼得

1 个答案:

答案 0 :(得分:0)

TransactionScope是在同一个事务中完成所有操作的最佳方法,但要小心你的连接字符串的定义方式(并在Azure上进行测试,如果你将它部署到那里),因为DTC可能在某些情况下(example

参与并导致问题

替代方法是继承SimpleMembershipProvider并覆盖CreateUserAndAccount,因为这就是WebSecurity调用的全部内容。然后,您可以通过复制和扩展SimpleMembershipProvider代码在单个上下文中完成所有工作。