如何围绕Membership.CreateUser封装事务?
时间:2020-03-06 15:04:45 来源:igfitidea点击:
我在爱好/学习应用程序中使用asp.net SqlMembershipProvider和LinqToSql。我在LinqtoSql中保留了一些用户属性,因此流程如下:
Membership.CreateUser-> MyClass.AddUserDetails。我想将整个事情包装在一个事务中,因此,如果myclass位失败,我可以回滚成员资格位。有关如何操作的任何建议?
解决方案
我们可以设置DataContext的Transaction属性,使其参与已经拥有的事务。
提供商不明确支持交易,我前段时间要求此功能:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102268
我认为,如果我们使用TransactionScope类,它应该可以工作,尽管我们将承担MSDTC协调的事务的开销。
我的现实生活经历(不止一次):
- 初级程序员写一个站点。
- 在代码检查期间,我捕获了用户创建和配置文件创建之间丢失的事务(通常使用自定义SqlProvider)
- 我们将所有内容包装在DTC交易中。
- 在初级程序员的计算机上没有任何工作。
- 在初级程序员的计算机上修复DTC。
- 部署到共享主机环境。
- 在托管环境中没有任何工作。
- 与托管公司争辩4小时,尝试修复其DTC。
- 删除交易,因为网站必须在线。
- 祈祷。
我真的不喜欢会员了...