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を修正します。
- 共有ホスティング環境にデプロイします。
- ホスティング環境では機能しません。
- DTCを修正しようとしているホスティング会社と4時間議論します。
- サイトがオンラインになる ため、トランザクションを削除します。
- 祈る。
メンバーシップはもう好きではありません...
DataContextのTransactionプロパティを設定して、既存のトランザクションに参加させることができます。
所属していません StackOverflow