在ASP.NET中从DB自动生成ID

时间:2012-05-09 14:46:46

标签: asp.net sql database lambda autonumber

我的桌面员工有一把主键。我把它命名为“IDS”。 IDS数据如:K-00001,K-00002等。 我想问的是,如何在ASP.NET中自动生成这个IDS,而不是在SQL中使用触发器或函数?

我已经完成了这样的代码:

            DBRabbit _db = new DBRabbit();
            Employee k = new Employee();
            var row = (from r in _db.Employees
                       orderby r.IDS descending
                       select r).FirstOrDefault();
            var n = row.IDS.PadLeft(5, '0');    
            IDSText.Text = n.ToString();

我在考虑如何将'n'添加到+ 1时陷入困境,因为当我写这样的时候:

var n = row.IDS.PadLeft(5, '0')+1; 

(最后记录是K-00010)
结果是K-000101 如何在不更改数据库或使用SQL服务器脚本/查询的情况下使其成为K-00011?

5 个答案:

答案 0 :(得分:5)

詹姆斯说,你最好让你的IDS栏自动增加。此外,如果您需要为K-00010K-00011添加另一列,...我建议您使用具有以下公式的计算列

'K-' + cast( right([IDS]+(100000),(5)) as varchar(5))

编辑: 公式更正了。

答案 1 :(得分:2)

使列自动递增。根据经验,你应该从不手动增加主键 - 这只是乞求问题。正确的事件序列会破坏这种逻辑。

答案 2 :(得分:1)

只是在某个地方有一个auto inc整数(优先选择DB),然后使用

建立你无疑非常有意义的表示
String.Concat("K-",KeyValue.ToString().PadLeft(5,'0');

你的方式很麻烦,几乎可以保证墨菲有机会和你一起玩。只是不要做你正在做的事情。

答案 3 :(得分:0)

尝试:

var n = (Convert.ToInt32(row.IDS) + 1).ToString().PadLeft(5, '0');

答案 4 :(得分:0)

你正在使用上面的javascript吗?如果是这样尝试使用

var n =(number(row.ids.substring(2))+ 1)。toString()。PadLeft(5,'0')

substirng函数是删除“k - ”