Как добавить суффикс, чтобы он был уникальным, если в базе данных есть запись с таким же именем?

У меня проблемы с небольшой проблемой.

продукты перечислены в базе данных. В столбце кода данные хранятся следующим образом:

«F-01, F-02, F-03, ..., X-99»

Клиенты могут захотеть добавить внешние данные в систему, но иногда они хотят добавить ту же запись.

Чтобы избежать этих дубликатов, мне нужно поставить отличительный суффикс, такой как «-01» в конце строки кода.

Я разрабатываю эту систему на C #, и я разработал такую ​​логику:

int counter = 1;
var code = "F-" + productEntity.Code;
​
while (await uow.Repository<Product>().Query().AnyAsync(a => a.Code == code) == true)
{
   code = code + "-" + counter;
   counter++;
}

Но я заметил, что запись, которую я добавил в форме F-01-1 , превратится в F-01-1-1, когда она вернется ко мне.

Я думаю, что упустил очень маленькую точку, но я не могу достичь своей цели.

Всего 1 ответ


Код выражения code + "-" + counter; добавляет 3 строки вместе и возвращает результат.

Сказать:

  • code "F-01"

  • counter 1

Тогда приведенное выше выражение будет оцениваться как таковое:

  • "F-01" + "-" + "1" , то есть "F-01-1"

Если вы повторно выполните свой метод, то выражение будет:

  • "F-01-1" + "-" + "1" то есть "F-01-1-1"

И так далее.

Решение состоит в том, чтобы разделить код для извлечения последней части, которая соответствует значению счетчика. Это делается с помощью string[] parts = "F-01-1".Split('-') :

  • parts[0] = "F"

  • parts[1] = "01"

  • parts[2] = "1" что соответствует счетчику

Так что теперь int counter = int.Parse(parts[2]) + 1 вернет следующее значение для счетчика 2 .

И вы можете получить полный код "F-01-2" возвращенный code = $"{parts[0]}-{parts[1]}-{counter}"


Есть идеи?

10000