2012-05-09 7 views
1

У меня есть первичный ключ для моего сотрудника таблицы. Я назвал его «IDS». Данные IDS похожи на: K-00001, K-00002 и т. Д. Я хочу спросить, как сделать это автоматическое создание IDS в ASP.NET, не используя триггер или функцию в SQL?Автогенерированный идентификатор от DB в 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 как сделать это K-00011 без изменения БД или с использованием сценария/запросов SQL-сервера?

ответ

5

Лучше, чтобы ваш столбец IDS автоматически увеличивался, как сказал Джеймс. Кроме того, если вам нужно иметь еще один столбец для K-00010, K-00011 ... Я хотел бы предложить вам использовать вычисляемый столбец со следующей формулой

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

EDIT: скорректированная Формулой.

+1

+1: Хорошее предложение. Мне особенно нравится простота внедрения. OP может реализовать это без засорения всей конструкции. –

+0

Абсолютно, это легко. – Kaf

+0

Я изменил его на auto increment, изменив его на int, а затем, как использовать этот «cast»? Он используется на asp или sql-сервере? –

0

Try:

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

Необходимо также снять K-off спереди, он скоро начнет ошибочно «умный» трюк. –

+0

Да, я забыл «K» ... – MikeTWebb

2

сделать колонки автоинкрементные. Как правило, вы должны никогда прирост первичных ключей вручную - это просто попрошайничество по вопросам. Правильная последовательность событий может поставить под угрозу эту логику.

+2

«Проблемы» - это хороший способ сказать «ужасно-ужасно-болезненные вещи». +1 =) – jadarnel27

+1

Действительно потерянный подсчет количества раз, когда я видел подобное. Это просто шутка, ожидающая, что это произойдет. –

1

Просто есть авто вкл целое число где-то (DB в предпочтении), а затем построить свой без сомнения, очень значимое представление с

String.Concat("K-",KeyValue.ToString().PadLeft(5,'0'); 

вашем пути много возиться с почти гарантированным шансом для Мерфи, чтобы играть с твоя голова. Просто не делай того, что делаешь.

0

Вы используете javascript для вышеперечисленного? если так попробовать использовать

вар п = (число (row.ids.substring (2)) + 1) .ToString(). PadLeft (5, '0')

функция substirng, чтобы удалить «k-»

Смежные вопросы