3

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

4

3 回答 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 回答