我在爱好/学习应用程序中使用 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属性,使其参与您已有的事务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top