Heim Datenbank MySQL-Tutorial 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

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Version ist Enterprise? Welche Version ist Enterprise? Jan 12, 2021 am 10:55 AM

Enterprise ist die Enterprise-Version des Windows-Systems. Die Windows-Enterprise-Version richtet sich hauptsächlich an große und mittlere Unternehmen. Sie verfügt über eine Vielzahl praktischer Funktionen wie Direct Access, Windows To Go Creator, AppLokcer, BranchCache usw.

Welches Element ist Li? Welches Element ist Li? Aug 03, 2023 am 11:19 AM

li ist ein Element in der HTML-Auszeichnungssprache und wird zum Erstellen von Listen verwendet. li stellt ein Listenelement dar, das ein untergeordnetes Element von ul oder ol ist. Die Rolle des li-Tags besteht darin, jedes Element in der Liste zu definieren. In HTML wird das li-Element normalerweise mit dem ul- oder ol-Element verwendet, um eine geordnete oder ungeordnete Liste zu erstellen. Ungeordnete Listen verwenden das ul-Element und Listenelemente werden durch das li-Element dargestellt, während geordnete Listen ebenfalls das ol-Element verwenden li Elementdarstellung.

Was ist li in html Was ist li in html Nov 19, 2021 pm 03:31 PM

In HTML lautet der vollständige englische Name „list item“, was „Listenelement“ bedeutet. Es handelt sich um ein Element-Tag, das ein Listenelement definiert. Tag „<li>“ Verfügbar in der geordneten Liste „<ol>“ und der ungeordneten Liste „<ul>“.

So entfernen Sie den Li-Standardstil in CSS So entfernen Sie den Li-Standardstil in CSS Jan 28, 2023 pm 02:09 PM

So entfernen Sie den Li-Standardstil in CSS: 1. Erstellen Sie eine HTML-Beispieldatei. 2. Fügen Sie den Li-Tag-Inhalt hinzu. 3. Setzen Sie das Attribut „list-style-type“ in CSS auf „none“, um den Li-Standardstil zu entfernen .

So verwenden Sie Transactionscope So verwenden Sie Transactionscope Dec 15, 2023 am 11:30 AM

So verwenden Sie den Transaktionsbereich: 1. Führen Sie einen Namespace ein. 2. Erstellen Sie ein TransactionScope-Objekt. 4. Führen Sie eine Transaktion durch. Detaillierte Einführung: 1. Vor der Verwendung von TransactionScope müssen Sie den System.Transactions-Namespace einführen. 2. Erstellen Sie ein TransactionScope-Objekt.

So verwenden Sie Transactionscope So verwenden Sie Transactionscope Dec 15, 2023 pm 02:37 PM

Schritte zur Verwendung von Transactionscope: 1. Einführen eines Namespace; 2. Erstellen eines TransactionScope-Objekts; 4. Ausführen einer Datenbankoperation; Detaillierte Einführung: 1. Vor der Verwendung von TransactionScope müssen Sie den System.Transactions-Namespace einführen. 2. Erstellen Sie das TransactionScope-Objekt im Codeblock, der Transaktionen usw. verwenden muss.

Microsoft kündigt die Umbenennung der Editionen Bing Chat und Enterprise in Copilot an Microsoft kündigt die Umbenennung der Editionen Bing Chat und Enterprise in Copilot an Nov 18, 2023 pm 02:17 PM

Laut Nachrichten dieser Website vom 16. November gab Microsoft auf der heutigen Microsoft Ignite 2023-Entwicklerkonferenz bekannt, dass BingChat und seine Enterprise-Premiumversion BingChat for Enterprise offiziell in Copilot umbenannt wurden! Caitlin Roulston, Kommunikationsdirektorin von Microsoft, sagte, dass das Unternehmen beschlossen habe, „BingChat Enterprise“ in „Copilot“ umzubenennen. Diese Änderung spiegelt die Vision von Microsoft wider, ein einheitliches Copilot-Erlebnis für Verbraucher und Geschäftskunden zu schaffen. Ab dem 1. Dezember mit einem Enterprise-Konto (Microsoft

So zeigen Sie verschiedene Farben in CSS LI an So zeigen Sie verschiedene Farben in CSS LI an Jan 28, 2023 pm 01:48 PM

So implementieren Sie CSS Li, ​​um verschiedene Farben anzuzeigen: 1. Ändern Sie die Li-Farbe über das Attribut „ul li::marker {color: #3860f4;}“. 2. Über „li:before {content: „“;width: 6px ;height: 6px;display: inline-block;border-radius: 50%;background: #4F8EFF..."-Attribut legt die Farbe fest.

See all articles