如何围绕Membership.CreateUser包装事务?

时间:2008-10-03 14:48:19

标签: linq-to-sql asp.net-membership

我在业余爱好/学习应用程序中使用asp.net SqlMembershipProvider和LinqToSql。我有一些用户属性,我保留在LinqtoSql中,所以我的流程是: Membership.CreateUser - > MyClass.AddUserDetails。我想将整个事情包装在一个事务中,所以如果myclass位失败,我可以回滚成员资格位。有关如何操作的任何建议吗?

3 个答案:

答案 0 :(得分:4)

我的真实生活经历(不止一次发生):

  • 初级程序员写一个网站。
  • 在代码审查期间,我捕获用户创建和配置文件创建之间缺少的事务(通常使用自定义SqlProvider)
  • 我们将所有内容都包含在DTC交易中。
  • 在初级程序员的计算机上没有任何作用。
  • 在初级程序员的计算机上修复DTC。
  • 部署到共享托管环境。
  • 在托管环境中没有任何作用。
  • 与主办公司试图修复他们的DTC争论4个小时。
  • 删除交易,因为网站上线。
  • 祈祷。

我不再喜欢会员资格......

答案 1 :(得分:3)

提供商没有明确支持交易,我前一段时间要求这个功能:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102268

我认为如果您使用TransactionScope类它应该可以工作,尽管您将拥有MSDTC协调事务的开销。

答案 2 :(得分:0)

您可以设置DataContext的Transaction属性,使其参与您已有的事务。