Как я могу обернуть транзакцию вокруг Membership.CreateUser?

StackOverflow https://stackoverflow.com/questions/167242

  •  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 на компьютере младшего программиста.
  • Развертывание в среде общего хостинга.
  • В среде хостинга ничего не работает.
  • Спорьте 4 часа с хостинговой компанией, пытающейся исправить их DTC.
  • Удалить транзакцию, потому что сайт имеет выйти в интернет.
  • Молиться.

Мне больше не нравится членство...

Вы можете установить свойство Transaction объекта DataContext, чтобы оно могло участвовать в уже выполненной вами транзакции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top