namespace Entity
{
/// <summary>
/// 自定義主鍵編碼
/// </summary>
public enum PkIdRecordCode
{
/// <summary>
/// OrderID
/// </summary>
OR = 10,
/// ProductID
PR = 30,
/// StoreID
ST = 40,
/// UserID
US = 20,
}
/// 含有自增主鍵性質的表枚舉
public enum PKIDTable
/// 地區資訊
Areas = 1,
/// 銀行資訊
BankInfos = 2,
/// 商品虛拟分類屬性
CategoryPropertys = 3,
}
}
/// 代替資料庫的自增主鍵的解決方案,解決了批量導資料ID出錯的問題
/// <param name="code"></param>
/// <returns></returns>
public int GetNewPKID(Entity.PKIDTable code) //由後背景也要建立使用者,是以把它改為public -zhangzhanling
{
string _code = null;
int idNum = 0;
using (TransactionScope transactionScope = new TransactionScope())
{
try
{
_code = Enum.GetName(typeof(Entity.PKIDTable), code);
idNum = base._db.ExecuteQuery<int>("UPDATE PkIdTable SET IDNum= IDNum+1 WHERE Code={0};select IDNum from PkIdTable WHERE Code = {0}", _code).Single();
transactionScope.Complete();
transactionScope.Dispose();
return idNum;
}
catch (Exception ex)
throw ex;
finally
}
}
/// <summary>
/// 一些特殊的主鍵,需要有固定的位數,當位數的數字不夠時,在前面補0
public string GetNewID(Entity.PkIdRecordCode code) //由後背景也要建立使用者,是以把它改為public -zhangzhanling
_code = Enum.GetName(typeof(Entity.PkIdRecordCode), code);
idNum = base._db.ExecuteQuery<int>("UPDATE PkIdRecords SET IDNum= IDNum+1 WHERE Code={0};select IDNum from PkIdRecords WHERE Code = {0}", _code).Single();
return string.Format("{0}{1}", (int)code, idNum.ToString().PadLeft(6, '0'));
}
資料庫結構