如何围绕 Membership.CreateUser 封装事务?
-
03-07-2019 - |
题
我在爱好/学习应用程序中使用 asp.net SqlMembershipProvider 和 LinqToSql。我在 LinqtoSql 中保留了一些用户属性,所以我的流程是:Membership.CreateUser -> MyClass.AddUserDetails。我想将整个事情包装在一个事务中,因此如果 myclass 位失败,我可以回滚成员资格位。关于如何做到这一点有什么建议吗?
解决方案
提供商没有明确支持交易,我前一段时间要求这个功能:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102268
我认为如果您使用TransactionScope类它应该可以工作,尽管您将拥有MSDTC协调事务的开销。
其他提示
我的真实经历(发生过不止一次):
- 初级程序员编写一个网站。
- 在代码审查期间,我发现用户创建和配置文件创建之间缺少事务(通常使用自定义 SqlProvider)
- 我们将所有内容包装在 DTC 事务中。
- 初级程序员的计算机上什么都不起作用。
- 修复初级程序员计算机上的 DTC。
- 部署到共享托管环境。
- 在托管环境中没有任何作用。
- 与托管公司争论了 4 个小时试图修复他们的 DTC。
- 删除交易,因为网站 有 上网。
- 祈祷。
我真的不喜欢会员了...
您可以设置DataContext的Transaction属性,使其参与您已有的事务。
不隶属于 StackOverflow