2015-08-06 1 views
1

J'ai quelques données que je veux insérer dans 2 bases de données (1 MSSQL Server, 2 POSTGRY). Si l'enregistrement est inséré dans les deux bases de données, les deux devraient être validés, sinon les deux devraient être annulés.Quel IsolationLevel convient le mieux dans TransactionScope pour traiter mes données avec succès En C#?

Quelqu'un peut-il m'aider à savoir quel IsolationLevel je dois définir dans mon code C#? Actuellement, j'utilise le code suivant.

pour la base de données SQL,

var sqlTransactionScope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.Serializable }) 

Pour la base de données PostGry,

var npgsqlTransactionScope = npgsqlConnection.BeginTransaction() 

Mais ce code crée des problèmes suivants parfois:

- process still waiting for ShareLock on transaction 
- canceling statement due to statement timeout 

Répondre

0

Vous pouvez éviter/réduire le verrouillage de la base de données/table utilisant l'instantané isolationlevel. Voir link ici pour plus de détails. La base de données doit être configurée pour ce niveau d'isolation.