【问题标题】:Auto generated ID from DB in ASP.NET从 ASP.NET 中的数据库自动生成的 ID
【发布时间】:2012-12-18 17:03:50
【问题描述】:

我的表员工有一个主键。我将其命名为“IDS”。 IDS 数据如:K-00001、K-00002 等。 我想问的是,如何让这个IDS在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 服务器脚本/查询的情况下使其成为 K-00011?

【问题讨论】:

    标签: asp.net sql database lambda autonumber


    【解决方案1】:

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

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

    编辑: 公式已更正。

    【讨论】:

    • +1:很好的建议。我特别喜欢的是易于实施。 OP 可以在不搞砸整个设计的情况下实现这一点。
    • 当然,这很容易。
    • ye,这是一个t-sql公式。转到表的设计模式并向其添加新列。然后在“列属性”>“表设计器”>“计算列规范”>“公式”中。过去并保存。你完成了。
    • 天哪,你一定做错了。如果您仔细阅读我所说的并遵循它,这将非常简单。再次,让您的 IDS 列自动递增列,然后忘记它。 Add another new column to your table 并将上面的公式作为Column properties > Table designer > Computed column specifications > Formula. Past it there and save 添加到新列中。如果您的新列名是 myColumn,那么如果您在查询中选择 myColumn,它将带来您所期望的。例如,SELECT IDS,myColumn FROM Employee.
    • 对不起..我的错..我在同一栏目中这样做了..我没有注意到新栏目..对不起..我的错..但真的很感谢这个,现在它起作用了!非常感谢 Kaf .. 谢谢你耐心地教我:D
    【解决方案2】:

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

    【讨论】:

    • “问题”是一种很好的表达“可怕-可怕-痛苦-坏事”的方式。 +1 =)
    • 确实记不清我见过这种事情的次数了。这只是等待发生的事情。
    【解决方案3】:

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

    构建毫无疑问非常有意义的表示
    String.Concat("K-",KeyValue.ToString().PadLeft(5,'0');
    

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

    【讨论】:

      【解决方案4】:

      试试:

      var n = (Convert.ToInt32(row.IDS) + 1).ToString().PadLeft(5, '0');
      

      【讨论】:

      • 还得把前面的K-去掉,他正在做很快就会出错的“智能”数字把戏。
      【解决方案5】:

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

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

      substirng函数是去掉“k-”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-13
        • 2021-06-29
        • 1970-01-01
        • 2014-06-29
        • 1970-01-01
        • 2014-01-27
        • 2011-10-24
        • 2021-07-22
        相关资源
        最近更新 更多