1

我的表员工有一个主键。我将其命名为“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?

4

5 回答 5

5

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

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

编辑:公式更正。

于 2012-05-09T15:00:07.280 回答
2

使列自动递增。根据经验,您永远不应该手动增加主键——这只是在乞求问题。正确的事件顺序会损害这种逻辑。

于 2012-05-09T14:53:37.307 回答
1

只需在某处有一个自动 inc 整数(首选 DB),然后用

String.Concat("K-",KeyValue.ToString().PadLeft(5,'0');

你的方式很混乱,墨菲几乎保证有机会玩你的头。只是不要做你正在做的事情。

于 2012-05-09T15:00:15.433 回答
0

尝试:

var n = (Convert.ToInt32(row.IDS) + 1).ToString().PadLeft(5, '0');
于 2012-05-09T14:53:33.907 回答
0

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

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

替代功能是删除“k-”

于 2012-05-09T15:00:46.557 回答