1

テーブルの従業員の主キーがあります。「IDS」と名付けました。IDSデータは次のようなものです:K-00001、K-00002など。SQLでトリガーや関数を使用せずに、このIDSをASP.NETで自動生成する方法を教えてください。

私は次のようにコードを実行しました:

            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ですDBを変更したり、SQLサーバーのスクリプト/クエリを使用したりせずにK-00011にする方法は?

4

5 に答える 5

5

Jamesが言ったように、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

auto 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 に答える