Created
November 18, 2015 03:50
-
-
Save relyky/d4e4f58aa9a88e8c095b to your computer and use it in GitHub Desktop.
TransactionScope 範例,可依此模式設計多資料庫連線的 tow phase transaction。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//# 建立TransactionScope | |
using (TransactionScope Ts = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 10, 0))) | |
{ | |
//# 建立DB連線,一個TransactionScope下可有多個DB連線。 | |
using (SqlConnection conn = new SqlConnection(mDB_ConnString)) | |
{ | |
conn.Open(); | |
//# 以下為商業邏輯 | |
// get current database datetime, 'yyyy-mm-dd HH:mm:ss' | |
SqlCommand cmd = new SqlCommand("SELECT Convert(Varchar,GetDate(), 120)", conn); | |
//cmd.CommandTimeout = 600; | |
string curDbDtm = (string)cmd.ExecuteScalar(); // current database datetime. | |
// backup | |
cmd = new SqlCommand("INSERT INTO <Taget_Table_Backup> SELECT @BakDtm, * FROM <Target_Table>;", conn); | |
cmd.Parameters.AddWithValue("@BakDtm", curDbDtm); | |
cmd.ExecuteNonQuery(); | |
// delete | |
cmd = new SqlCommand("DELETE FROM <Target_Table> ", conn); | |
cmd.ExecuteNonQuery(); | |
// insert new data to DB | |
BulkCopy_<Target_Table>(dtSource, conn); | |
} | |
//# Commit | |
Ts.Complete(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment