我有一个带有NVarChar
键列的表。
我在这一列中使用了数值作为键,我为新记录增加了生成键的最后一个数字。
代码:
public string IncrementID(string lastID)
{
string[] lastKeyCodeA = new string[100];
for (int i = 0; i < 99; i++)
lastKeyCodeA[i] = "0";
int j = 100 - lastID.Length;
int k = 0;
while (k != lastID.Length)
{
lastKeyCodeA[j] = Convert.ToString(lastID[k]);
k++;
j++;
}
if (lastKeyCodeA[99] != "9")
{
int lastDigit = Convert.ToInt16(lastKeyCodeA[99]);
lastDigit++;
lastKeyCodeA[99] = Convert.ToString(lastDigit);
}
else
{
lastKeyCodeA[99] = "0";
lastKeyCodeA[98] = Convert.ToString((Convert.ToInt16(lastKeyCodeA[98]) + 1));
}
string result = "";
int firstNum = -1;
j = 0;
while (firstNum == -1 && j < 100)
{
if (firstNum == -1)
{
if (lastKeyCodeA[j] != "0") firstNum = j;
}
j++;
}
for (int i = firstNum; i < 100; i++)
{
result += lastKeyCodeA[i];
}
return result;
}
我只是想知道如何使用xml在NHibernate中映射此表? 有没有办法在不使用我的代码的情况下执行此操作?
我知道我必须实现NHibernate.Id.IIdentifierGenerator
界面来创建我自己的自定义生成器,但我不知道如何将最后一个密钥作为参数传递。