📄 transactionmanager.cs
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -