Domanda

TransactionScope è una caratteristica incredibile, ma troppo pochi fornitori implementano correttamente. Non voglio passare la connessione come parametro.

È stato utile?

Soluzione

Non sei sicuro di quello che si voleva ottenere utilizzando TransactionScope qui - se l'idea è quella di avere il flusso auotmatic di transazioni attraverso metodi (e semplice arruolamento all'interno della transazione in corso) poi passando connessione come parametro non è l'unico modo. È possibile passare connessione corrente e la transazione utilizzando corrente CallContext (o thread corrente). Mettere un involucro statica semplice che avrebbe controllare se la connessione / transazione esiste sul contesto chiamata corrente e crea in caso contrario. Questo è il modo non intrusivo trasparente rispetto a passare dal parametro.

Ora, se siete alla ricerca di transazioni che scorre attraverso i confini del dominio app e / o utilizzo di più gestori di risorse (vale a dire utilizzando le transazioni distribuite) allora la cosa migliore sarebbe quella di utilizzare TransactionScope e stendere il proprio ResourceManager . Naturalmente, questa non è una cosa banale, ma poi è quello che il comporta requisito. Se il sistema sottostante non fornisce risorse di transazione poi personalizzato gestore di risorse può utilizzare la transazione di compensazione per aver roll back (per esempio, un manager in una parte superiore del file system può utilizzare "Elimina cartella", come compensazione delle transazioni contro transazione originale di "Crea cartella") .

Altri suggerimenti

Forse siete alla ricerca di sistema Prevalenza .

In sostanza, ogni transazione è journal (i dettagli della transazione sono salvati ) e se l'applicazione si blocca e viene riavviato è possibile riprendere da dove si era interrotto o rollback delle modifiche in base allo stato journal.

Ecco un link al Snapshot modello che possono aiutarvi nella realizzazione del sistema Prevalenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top