趣味/学習アプリケーションで asp.net SqlMembershipProvider と LinqToSql を使用しています。LinqtoSql に保持しているユーザー プロパティがいくつかあるので、フローは次のとおりです: Membership.CreateUser -> MyClass.AddUserDetails。すべてをトランザクションにラップしたいので、myclass ビットが失敗した場合は、メンバーシップ ビットをロールバックできます。その方法について何か提案はありますか?
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
MSDTC で調整されたトランザクションのオーバーヘッドが発生しますが、TransactionScope クラスを使用すれば動作するはずです。
于 2008-10-03T17:35:14.297 に答える
0
DataContext の Transaction プロパティを設定して、既に持っているトランザクションに参加させることができます。
于 2008-10-03T17:25:57.547 に答える