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