我的桌面员工有一把主键。我把它命名为“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?
答案 0 :(得分:5)
詹姆斯说,你最好让你的IDS栏自动增加。此外,如果您需要为K-00010
,K-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)
var n =(number(row.ids.substring(2))+ 1)。toString()。PadLeft(5,'0')
substirng函数是删除“k - ”