我有一个表员工的主键。我把它命名为"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?
你最好像詹姆斯说的那样让你的 IDS 列自动递增。另外,如果您需要为K-00010
提供另一列,K-00011
,...我建议您使用以下公式的计算列
'K-' + cast( right([IDS]+(100000),(5)) as varchar(5))
编辑:公式已更正。
使列自动递增。根据经验,您永远不应该手动递增主键 - 那只是乞求问题。正确的事件顺序会损害这种逻辑。
只需在某处有一个自动 inc 整数(首选数据库),然后使用
String.Concat("K-",KeyValue.ToString().PadLeft(5,'0');
你的方式是很多乱七八糟的,几乎可以保证墨菲有机会玩你的头。只是不要做你正在做的事情。
尝试:
var n = (Convert.ToInt32(row.IDS) + 1).ToString().PadLeft(5, '0');
<</div>
div class="one_answers"> 您是否使用JavaScript进行上述操作? 如果是这样,请尝试使用
var n = (number(row.ids.substring(2))+1).toString().左垫(5,'0')
子斯特伦函数是去除"k-"