Maison base de données tutoriel mysql TransactionScope和Enterprise Libray 3.0 Data Access Applicat

TransactionScope和Enterprise Libray 3.0 Data Access Applicat

Jun 07, 2016 pm 03:44 PM
enterprise li transactionscope

Enterprise Libray 3.0已经发布了,具体可参见TerryLee的 Enterprise Library 3.0 发布.下载了看看,有非常激动人心的更新.我只是看看Data Access Application Block代码,代码中有这个类TransactionScopeConnections,是个内部类,设计意图很明显就是使用数据库

Enterprise Libray 3.0已经发布了,具体可参见TerryLee的 Enterprise Library 3.0 发布.下载了看看,有非常激动人心的更新.我只是看看Data Access Application Block代码,代码中有这个类TransactionScopeConnections,是个内部类,设计意图很明显就是使用数据库的事务模型.我觉得设计为内部类有点瑕疵,我的习惯是事务和提交在业务逻辑层. .NET 2.0的System.Transactions应该是一个更好的选择。就将Data Access Application Block的QuickStart例子代码:

///


/// Transfers an amount between two accounts.
///

/// Amount to transfer.
/// Account to be credited.
/// Account to be debited.
/// true if sucessful; otherwise false.
/// Demonstrates executing multiple updates within the
/// context of a transaction.

public bool Transfer(int transactionAmount, int sourceAccount, int destinationAccount)
{
bool result = false;

// Create the Database object, using the default database service. The
// default database service is determined through configuration.
Database db = DatabaseFactory.CreateDatabase();

// Two operations, one to credit an account, and one to debit another
// account.
string sqlCommand = "CreditAccount"
DbCommand creditCommand = db.GetStoredProcCommand(sqlCommand);

db.AddInParameter(creditCommand, "AccountID", DbType.Int32, sourceAccount);
db.AddInParameter(creditCommand, "Amount", DbType.Int32, transactionAmount);

sqlCommand = "DebitAccount"
DbCommand debitCommand = db.GetStoredProcCommand(sqlCommand);

db.AddInParameter(debitCommand, "AccountID", DbType.Int32, destinationAccount);
db.AddInParameter(debitCommand, "Amount", DbType.Int32, transactionAmount);

using (DbConnection connection = db.CreateConnection())
{
connection.Open();
DbTransaction transaction = connection.BeginTransaction();

try
{
// Credit the first account
db.ExecuteNonQuery(creditCommand, transaction);
// Debit the second account
db.ExecuteNonQuery(debitCommand, transaction);

// Commit the transaction
transaction.Commit();

result = true;
}
catch
{
// Rollback transaction
transaction.Rollback();
}
connection.Close();

return result;
}
}

按照TransactionScope类进行改造,试验成功了,代码如下:

public bool Transfer(int transactionAmount, int sourceAccount, int destinationAccount)
{
bool result = false;
Database database = DatabaseFactory.CreateDatabase();

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
TestCommand1(database, transactionAmount, sourceAccount);
TestCommand2(database, transactionAmount, destinationAccount);
scope.Complete();
result = true;
}
return result;

}

private void TestCommand1(Database db, int transactionAmount, int sourceAccount)
{
string sqlCommand = "CreditAccount"
DbCommand creditCommand = db.GetStoredProcCommand(sqlCommand);

db.AddInParameter(creditCommand, "AccountID", DbType.Int32, sourceAccount);
db.AddInParameter(creditCommand, "Amount", DbType.Int32, transactionAmount);

// Credit the first account
db.ExecuteNonQuery(creditCommand);
}

private void TestCommand2(Database db, int transactionAmount, int destinationAccount)
{
string sqlCommand = "DebitAccount"
DbCommand debitCommand = db.GetStoredProcCommand(sqlCommand);

db.AddInParameter(debitCommand, "AccountID", DbType.Int32, destinationAccount);
db.AddInParameter(debitCommand, "Amount", DbType.Int32, transactionAmount);

// Debit the second account
db.ExecuteNonQuery(debitCommand);
}

  DAAB  在一个事务中可以在一个数据库连接中检测到几个命令的执行,这样可以避免虽然一个数据库连接执行的几个命令而启用 分布式事务 。在企业类库2.0的DAAB常常启用了分布式事务,就凭这一点,使用企业类库2.0的同学们有必要升级到企业类库3.0。

Parameter Discovery on Ms Access and SqlServer. using Microsoft Patterns and Practices DataBlock version 3.0 final
http://www.codeproject.com/useritems/Parameter_DiscoveryV292.asp

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle est la version entreprise ? Quelle est la version entreprise ? Jan 12, 2021 am 10:55 AM

Enterprise est la version entreprise du système Windows. La version entreprise de Windows s'adresse principalement aux grandes et moyennes entreprises. Elle a ajouté une variété de fonctions pratiques telles que Direct Access, Windows To Go Creator, AppLokcer, BranchCache, etc.

Quel élément est li ? Quel élément est li ? Aug 03, 2023 am 11:19 AM

li est un élément du langage de balisage HTML et est utilisé pour créer des listes. li représente un élément de liste, qui est un élément enfant de ul ou ol. Le rôle de la balise li est de définir chaque élément de la liste. En HTML, l'élément li est généralement utilisé avec l'élément ul ou ol pour créer une liste ordonnée ou non. Les listes non ordonnées utilisent l'élément ul, et les éléments de liste sont représentés par l'élément li, tandis que les listes ordonnées utilisent l'élément ol, en utilisant également. li Représentation des éléments.

Qu'est-ce que Li en HTML Qu'est-ce que Li en HTML Nov 19, 2021 pm 03:31 PM

En HTML, le nom anglais complet de li est "list item", ce qui signifie "list item". Il s'agit d'une balise d'élément qui définit un élément de liste. La syntaxe est "<li>list item content</li>" ; Balise <li>" Disponible en liste ordonnée "<ol>" et en liste non ordonnée "<ul>".

Comment supprimer le style par défaut de Li en CSS Comment supprimer le style par défaut de Li en CSS Jan 28, 2023 pm 02:09 PM

Comment supprimer le style par défaut li en CSS : 1. Créez un exemple de fichier HTML ; 2. Ajoutez le contenu de la balise li ; 3. Définissez l'attribut "list-style-type" sur "aucun" en CSS pour supprimer le style par défaut li. .

Comment utiliser Transactionscope Comment utiliser Transactionscope Dec 15, 2023 am 11:30 AM

Comment utiliser transactionscope : 1. Introduisez un espace de noms ; 2. Créez un objet TransactionScope ; 3. Démarrez une transaction ; 4. Effectuez des opérations de base de données ; Introduction détaillée : 1. Présentez l'espace de noms Avant d'utiliser TransactionScope, vous devez introduire l'espace de noms System.Transactions. 2. Créez un objet TransactionScope, lors de l'utilisation de TransactionScope, etc.

Comment utiliser Transactionscope Comment utiliser Transactionscope Dec 15, 2023 pm 02:37 PM

Étapes pour utiliser transactionscope : 1. Introduire un espace de noms ; 2. Créer un objet TransactionScope ; 3. Démarrer une transaction ; 4. Effectuer des opérations de base de données ; Introduction détaillée : 1. Présentez l'espace de noms Avant d'utiliser TransactionScope, vous devez introduire l'espace de noms System.Transactions. 2. Créez l'objet TransactionScope dans le bloc de code qui doit utiliser les transactions.

Microsoft annonce le changement de nom des éditions Bing Chat et Enterprise en Copilot Microsoft annonce le changement de nom des éditions Bing Chat et Enterprise en Copilot Nov 18, 2023 pm 02:17 PM

Selon les informations de ce site du 16 novembre, lors de la conférence des développeurs Microsoft Ignite 2023 d'aujourd'hui, Microsoft a annoncé que BingChat et sa version premium d'entreprise, BingChat for Enterprise, avaient été officiellement renommés Copilot ! La directrice des communications de Microsoft, Caitlin Roulston, a déclaré que la société avait décidé de renommer « BingChat Enterprise » en « Copilot ». Ce changement reflète la vision de Microsoft de créer une expérience Copilot unifiée pour les consommateurs et les entreprises. Bien sûr, ce n'est pas seulement le nom qui a changé. À partir du 1er décembre, en utilisant un compte Entreprise (Microsoft

Comment afficher différentes couleurs en CSS Li Comment afficher différentes couleurs en CSS Li Jan 28, 2023 pm 01:48 PM

Comment implémenter css li pour afficher différentes couleurs : 1. Modifiez la couleur li via l'attribut "ul li::marker {color: #3860f4;}" 2. Via "li:before {content: "";width: 6px ;hauteur : 6px;affichage : bloc en ligne ;bordure-radius : 50 % ;arrière-plan : #4F8EFF..." L'attribut définit la couleur.

See all articles