Я использую asp.net SqlMembershipProvider и LinqToSql в приложении для хобби/обучения. У меня есть некоторые пользовательские свойства, которые я сохраняю в LinqtoSql, поэтому мой поток таков: Membership.CreateUser -> MyClass.AddUserDetails. Я хотел бы обернуть все это в транзакцию, поэтому, если бит myclass не работает, я могу откатить бит членства. Любые предложения о том, как это сделать?
Как я могу обернуть транзакцию вокруг Membership.CreateUser?
Ответы (3)
Провайдеры явно не поддерживают транзакции, я попросил эту функцию некоторое время назад:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102268
Я думаю, что если вы используете класс TransactionScope, он должен работать, хотя у вас будут накладные расходы на транзакцию, координируемую MSDTC.
person
Joe
schedule
03.10.2008
И головные боли DTC. Например, заставить его работать в общей среде... соб...
- person Sklivvz; 03.10.2008
Мой реальный жизненный опыт (было не раз):
- Младший программист пишет сайт.
- Во время проверки кода я обнаруживаю недостающую транзакцию между созданием пользователя и созданием профиля (обычно с помощью пользовательского SqlProvider).
- Мы оборачиваем все в транзакцию DTC.
- На компьютере младшего программиста ничего не работает.
- Исправить код неисправности на компьютере младшего программиста.
- Развертывание в среде общего хостинга.
- В среде хостинга ничего не работает.
- Спорьте в течение 4 часов с хостинговой компанией, пытаясь исправить их код неисправности.
- Удалить транзакцию, так как сайт должен подключиться к сети.
- Молиться.
Членство мне больше не нравится...
person
Sklivvz
schedule
03.10.2008
Тот же опыт здесь, за исключением части хостинга. Хотя я не уверен, почему TransactionScope всегда хочет требовать DTC, когда это не нужно .... по крайней мере, когда задействовано членство.
- person Jon Kragh; 01.03.2011
Насколько вам известно, это все еще современное состояние: то есть вы все еще используете членство и без транзакций, или вы нашли лучшую альтернативу?
- person ChrisW; 21.01.2015
@ChrisW на самом деле никто больше не использует членство
- person Sklivvz; 21.01.2015
Спасибо. Я предполагаю, что вместо этого люди используют новую систему ASP 'Identity' (или что-то в этом роде?).
- person ChrisW; 22.01.2015
Вы можете установить свойство Transaction DataContext, чтобы он участвовал в уже существующей транзакции.
person
DamienG
schedule
03.10.2008