首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ASP.NET中从数据库自动生成的ID

在ASP.NET中从数据库自动生成的ID
EN

Stack Overflow用户
提问于 2012-05-09 22:46:46
回答 5查看 2.2K关注 0票数 1

我的表employee有一个主键。我把它命名为"IDS“。入侵检测系统的数据是这样的: K-00001,K-00002等等。我想问的是,如何使这个入侵检测系统在ASP.NET中自动生成,而不是使用SQL语言中的触发器或函数?

我的代码是这样写的:

代码语言:javascript
复制
            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时,我被卡住了。因为当我这样写的时候:

代码语言:javascript
复制
var n = row.IDS.PadLeft(5, '0')+1; 

(最后一条记录是K-00010)

结果是K-000101如何在不更改数据库或使用SQL server脚本/查询的情况下使其成为K-00011?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-09 23:00:07

您最好让IDS列像James所说的那样自动递增。另外,如果您需要为K-00010K-00011等创建另一个列...我建议您使用具有以下公式的计算列

代码语言:javascript
复制
'K-' + cast( right([IDS]+(100000),(5)) as varchar(5))

编辑:公式已更正。

票数 5
EN

Stack Overflow用户

发布于 2012-05-09 22:53:37

使该列自动递增。根据经验,您永远不应该手动增加主键--这是在自找麻烦。正确的事件顺序会破坏这一逻辑。

票数 2
EN

Stack Overflow用户

发布于 2012-05-09 23:00:15

只需在某个地方设置一个auto inc整数(DB优先),然后使用以下命令构建您的毫无疑问非常有意义的表示

代码语言:javascript
复制
String.Concat("K-",KeyValue.ToString().PadLeft(5,'0');

你的方式很麻烦,几乎肯定会有机会让墨菲玩弄你的头脑。只是不要做你正在做的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10518485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档