J'ai besoin de mettre à jour plusieurs instructions de mise à jour, mais toutes doivent fonctionner sur l'automicité, c'est-à-dire mettre à jour tout ou rien.
sur internet et dans certains autres si questions que j'aitrouvé comment utiliser Transaction mais je n'ai "trouvé aucun d'entre eux disant de mettre à jour des instructions multiples en une transaction. Voir ci-dessous trois déclarations de mises à jour, ne fonctionnant pas actuellement sous transaction
/// this are my update calls.
var report = reportRepository.Update(reportModel);
var book = bookRepository.Update(bookModel);
var mobile = mobileRepository.Update(mobileModel);
// each Update method for all repository will looks like
public returnModel Update(someModel model)
{
// assign values from model to entity
Context.ObjectStateManager.ChangeObjectState(entity,System.Data.EntityState.Modified)
Context.SaveChanges();
}
Réponses:
4 pour la réponse № 1Vous pouvez envelopper les mises à jour dans un TransactionScope:
using (TransactionScope transaction = new TransactionScope())
{
var report = reportRepository.Update(reportModel);
var book = bookRepository.Update(bookModel);
var mobile = mobileRepository.Update(mobileModel);
...
transaction.Complete();
}
1 pour la réponse № 2
Comme Darin l’a mentionné, utilisez unLa méthode préférée consiste à faire en sorte que vos référentiels appartiennent à une interface IUnitOfWork. L'appel de mise à jour définit simplement l'état sur modifié et SaveChanges se produit à l'extérieur de votre référentiel pour enregistrer toutes les modifications en même temps. Cela devrait se produire automatiquement dans une transaction.
Vous appelez donc toutes vos mises à jour, puis unitOfWork.SaveChanges où votre unité de travail personnalisée contient une référence à votre contexte et implémente une méthode définie dans IUnitOfWork appelée Save ().
0 pour la réponse № 3
En gros, vous devez le gérer via TransactionScope Class. Vous pouvez ainsi configurer plusieurs mises à jour d'un modèle, puis utiliser Transaction.Complete pour enregistrer vos données dans une transaction.
Vérifiez s'il vous plaît Mise à jour de plusieurs objets dans une transaction unique dans une structure d'entité pour plus de détails.