我的表employee有一个主键。我把它命名为"IDS“。入侵检测系统的数据是这样的: K-00001,K-00002等等。我想问的是,如何使这个入侵检测系统在ASP.NET中自动生成,而不是使用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 server脚本/查询的情况下使其成为K-00011?
发布于 2012-05-09 23:00:07
您最好让IDS列像James所说的那样自动递增。另外,如果您需要为K-00010、K-00011等创建另一个列...我建议您使用具有以下公式的计算列
'K-' + cast( right([IDS]+(100000),(5)) as varchar(5))编辑:公式已更正。
发布于 2012-05-09 22:53:37
使该列自动递增。根据经验,您永远不应该手动增加主键--这是在自找麻烦。正确的事件顺序会破坏这一逻辑。
发布于 2012-05-09 23:00:15
只需在某个地方设置一个auto inc整数(DB优先),然后使用以下命令构建您的毫无疑问非常有意义的表示
String.Concat("K-",KeyValue.ToString().PadLeft(5,'0');你的方式很麻烦,几乎肯定会有机会让墨菲玩弄你的头脑。只是不要做你正在做的事情。
https://stackoverflow.com/questions/10518485
复制相似问题