Rumah pangkalan data tutorial 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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

enterprise是什么版本 enterprise是什么版本 Jan 12, 2021 am 10:55 AM

enterprise是Windows系统企业版,Windows企业版主要面向大中型企业,其加入了Direct Access、Windows To Go Creator、AppLokcer、BranchCache等多种实用功能。

Apakah unsur li? Apakah unsur li? Aug 03, 2023 am 11:19 AM

li ialah elemen dalam bahasa penanda HTML dan digunakan untuk membuat senarai. li mewakili item senarai, yang merupakan elemen anak ul atau ol Peranan tag li adalah untuk menentukan setiap item dalam senarai. Dalam HTML, elemen li biasanya digunakan dengan elemen ul atau ol untuk mencipta senarai tersusun atau tidak tersusun menggunakan elemen ul, dan item senarai diwakili oleh elemen li, manakala senarai tersusun menggunakan elemen ol, juga menggunakan. li Perwakilan unsur.

Apakah li dalam html Apakah li dalam html Nov 19, 2021 pm 03:31 PM

Dalam HTML, nama penuh bahasa Inggeris li ialah "item senarai", yang bermaksud "item senarai". Teg <li>" Tersedia dalam senarai tersusun "<ol>" dan senarai tidak tersusun "<ul>".

Bagaimana untuk mengalih keluar gaya lalai li dalam css Bagaimana untuk mengalih keluar gaya lalai li dalam css Jan 28, 2023 pm 02:09 PM

Cara mengalih keluar gaya lalai li dalam css: 1. Buat fail sampel HTML 2. Tambah kandungan tag li 3. Tetapkan atribut "jenis-gaya senarai" kepada "tiada" dalam css untuk mengalih keluar gaya lalai; .

Cara menggunakan transactionscope Cara menggunakan transactionscope Dec 15, 2023 am 11:30 AM

Cara menggunakan transactionscope: 1. Memperkenalkan ruang nama; 2. Buat objek TransactionScope 3. Mulakan transaksi; Pengenalan terperinci: 1. Perkenalkan ruang nama Sebelum menggunakan TransactionScope, anda perlu memperkenalkan ruang nama System.Transactions 2. Buat objek TransactionScope, apabila menggunakan TransactionScope, dsb.

Cara menggunakan transactionscope Cara menggunakan transactionscope Dec 15, 2023 pm 02:37 PM

Langkah-langkah untuk menggunakan transactionscope: 1. Memperkenalkan ruang nama; 2. Buat objek TransactionScope 3. Mulakan transaksi 4. Lakukan operasi pangkalan data; Pengenalan terperinci: 1. Perkenalkan ruang nama Sebelum menggunakan TransactionScope, anda perlu memperkenalkan ruang nama System.Transactions 2. Buat objek TransactionScope dalam blok kod yang perlu menggunakan transaksi, dsb.

Microsoft mengumumkan penjenamaan semula Bing Chat dan edisi Perusahaan kepada Copilot Microsoft mengumumkan penjenamaan semula Bing Chat dan edisi Perusahaan kepada Copilot Nov 18, 2023 pm 02:17 PM

Menurut berita dari laman web ini pada 16 November, pada Persidangan Pembangun Microsoft Ignite 2023 hari ini, Microsoft mengumumkan bahawa BingChat dan versi premium perusahaannya BingChat for Enterprise telah dinamakan semula sebagai Copilot! Pengarah Komunikasi Microsoft Caitlin Roulston berkata bahawa syarikat itu memutuskan untuk menamakan semula "BingChat Enterprise" kepada "Copilot" Perubahan ini mencerminkan visi Microsoft untuk mencipta pengalaman Copilot bersatu untuk pengguna dan pelanggan perniagaan. Mulai 1 Disember, menggunakan akaun Perusahaan (Microsoft

Bagaimana untuk memaparkan warna yang berbeza dalam css li Bagaimana untuk memaparkan warna yang berbeza dalam css li Jan 28, 2023 pm 01:48 PM

Cara melaksanakan css li untuk memaparkan warna yang berbeza: 1. Ubah suai warna li melalui atribut "ul li::marker {color: #3860f4;}" 2. Melalui "li:before {content: "";width: 6px ;height : 6px;display: inline-block;border-radius: 50%;background: #4F8EFF..." atribut menetapkan warna.

See all articles