如何为NHibernate映射创建一个String生成器

时间:2014-08-13 14:50:39

标签: c# nhibernate nhibernate-mapping

我有一个带有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界面来创建我自己的自定义生成器,但我不知道如何将最后一个密钥作为参数传递。

0 个答案:

没有答案