transactionmanager.cs
来自「该文件是多层体系结构的数据访问层」· CS 代码 · 共 98 行
CS
98 行
#region Copyright & License
//
// $Copyright:$
//
#endregion
#region Document Information
// $Author: Bai.shijun $
// $Rev: $
// $Date: 05-10-08 16:13 $
#endregion
using System;
using System.Collections;
using System.EnterpriseServices;
namespace Eai.Data.Transaction
{
#if DEBUG
public
#else
internal
#endif
class TransactionManager
{
/// <summary>
/// transaction stack
/// </summary>
private Stack transStack = new Stack();
private static object syncObj = new object();
[ThreadStatic]
private static TransactionManager instance;
public static TransactionManager Instance
{
get
{
if (instance == null)
{
lock (syncObj)
{
if (instance == null) instance = new TransactionManager();
}
}
return instance;
}
}
public IMixTransaction CurrentTransaction
{
get
{
if (transStack.Count == 0) return null;
return transStack.Peek() as IMixTransaction;
}
}
public bool IsInTransaction
{
get
{
return transStack.Count > 0;
}
}
public void Push(IMixTransaction trans)
{
transStack.Push(trans);
}
public IMixTransaction Pop()
{
return transStack.Pop() as IMixTransaction;
}
public static IMixTransaction CreateTransaction(MixTransactionOption mixTransOption, TransactionAttribute transAttr)
{
if (mixTransOption == MixTransactionOption.NotSupported) throw new InvalidOperationException("invalid mix transaction option");
switch (mixTransOption)
{
case MixTransactionOption.Native:
{
return new NhNativeTransaction();
}
case MixTransactionOption.COMPlus:
{
return new COMPlusTransaction(transAttr);
}
case MixTransactionOption.PromotableTx:
{
return new PromotableTransaction();
}
}
throw new InvalidOperationException(String.Format("not supported mix transaction option {0}.", mixTransOption));
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?