Question

J'utilise asp.net SqlMembershipProvider et LinqToSql dans une application de loisir / d'apprentissage. J'ai quelques propriétés utilisateur que je garde dans LinqtoSql, donc mon flux est le suivant: Membership.CreateUser - > MyClass.AddUserDetails. J'aimerais que le tout soit intégré dans une transaction. Par conséquent, si le bit myclass échoue, je peux annuler le bit d'appartenance. Des suggestions sur la façon de le faire?

Était-ce utile?

La solution

Les fournisseurs ne prennent pas explicitement en charge les transactions, j'ai demandé cette fonctionnalité il y a quelque temps:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=102268

Je pense que si vous utilisez la classe TransactionScope, cela devrait fonctionner, mais vous aurez les frais généraux d'une transaction coordonnée par MSDTC.

Autres conseils

Mon expérience réelle (qui s'est produite plus d'une fois):

  • Un programmeur junior écrit un site.
  • Lors de la révision du code, j'attrape la transaction manquante entre la création d'utilisateur et la création de profil (généralement avec un fournisseur personnalisé SqlProvider)
  • Nous intégrons tout dans une transaction DTC.
  • Rien ne fonctionne sur l'ordinateur du programmeur junior.
  • Correction du code d'anomalie sur l'ordinateur du programmeur junior.
  • Déployer dans un environnement d'hébergement partagé.
  • Rien ne fonctionne dans un environnement d'hébergement.
  • Discutez pendant 4 heures avec une société d’hébergement qui tente de réparer son DTC.
  • Supprimer la transaction car le site doit se connecter en ligne.
  • Priez.

Je n'aime plus vraiment les adhésions ...

Vous pouvez définir la propriété Transaction du DataContext pour le faire participer à une transaction que vous avez déjà.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top