2010-12-06 13 views
0

J'ai une propriété avec un ensemble et obtient la méthode et il charge (dans le get) et enregistre (dans l'ensemble) des données vers/à partir de la DB. Maintenant, je veux avoir ceci dans une transaction, qui est un IDbTransaction dans mon cas. Le problème est, comment pourrais-je donner à la propriété mon objet de transaction? J'ai déjà la transaction dans le code qui utilise la propriété ...Transmettre une transaction (ou tout autre objet) à une propriété?

Merci :)

+2

vous enregistrez dans DB dans un setter? Vous allez tellement coder l'enfer! ;) Les propriétés sont supposées être légères. Certaines des erreurs de codage les plus graves que j'ai jamais vues étaient dues aux propriétés qui en font trop et aux effets secondaires. –

+1

Lorsque vous avez besoin de passer un paramètre à votre propriété, c'est généralement une très bonne indication que la propriété doit être une méthode au lieu. – jvanrhyn

+0

Donc, j'ai une méthode Set et une méthode Get qui obtient la transaction en tant que param et fait le DB stuff? – grady

Répondre

1

Avez-vous essayé System.Transactions.Transaction.Current? C'est une propriété statique, documentée here

1

Vous pouvez renvoyer l'appel à votre propriété avec un objet TransactionScope. Tout appel dans le bloc using fera partie de la transaction.

using (TransactionScope scope = new TransactionScope()) 
{ 
    // call properties and other code 

    scope.Complete(); // needed or transaction rolls back 
}