2013-09-29 52 views
0

夥計們,SimpleMembership - 正確的方式來創建一個交易

管環境:ASP.NET MVC 4,剃刀

我使用SimpleMembership提供商我的Web應用程序。當用戶請求註冊時,我需要調用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(); 
    } 
} 

我有一種感覺,這應該工作。不過,我想就您是否有更好的方式徵求您的專家意見。

非常感謝您的幫助。

問候,
彼得

回答

0

TransactionScope是在Azure上,以使這一切發生在同一個事務中,但要小心你的連接字符串是如何定義的(最好的辦法和測試,如果這就是你在哪裏部署它到)作爲DTC可以參與進來,使你在某些情況下(example

另一種方法是從SimpleMembershipProvider繼承和覆蓋CreateUserAndAccount問題,因爲這是所有WebSecurity電話。然後,您可以通過複製和擴展SimpleMembershipProvider代碼在單個上下文中完成所有工作。

相關問題