2013-09-29 3 views
0

밥상을 만들 수있는 적절한 방법SimpleMembership - 트랜잭션을

Envrionment : ASP.NET MVC 4, 면도기

나는 내 웹 응용 프로그램 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(); 
    } 
} 

나는 이것이 작동해야한다고 느낀다. 그러나 더 좋은 방법이 있는지에 대한 귀하의 전문적인 의견을 듣고 싶습니다.

도움을 주셔서 감사합니다.

감사합니다,
피터 당신이 그것을 배포하는 곳이 있다면

답변

0

TransactionScope이 푸른에 가장 잘 모두 (같은 트랜잭션 내에서 발생하지만, 연결 문자열을 정의하는 방법에주의 만드는 방법 및 테스트입니다 그 모든 것을 WebSecurity 통화처럼)에 DTC가 참여하고 몇 가지 시나리오 (example)

대안이 SimpleMembershipProvider에서 상속 CreateUserAndAccount을 무시하는 것에 문제가 발생할 수 있기 때문이다. 그런 다음 SimpleMembershipProvider 코드를 복제하고 확장하여 단일 컨텍스트에서 모든 작업을 수행 할 수 있습니다.

관련 문제