Как добавить суффикс уникальным, если в базе данных есть запись с таким же именем? - PullRequest
1 голос
/ 16 января 2020

У меня небольшая проблема.

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

"F-01, F-02, F-03, ..., X-99"

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

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

Я разрабатываю эту систему в c # и разработал такую ​​логику 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 Ответ

0 голосов
/ 17 января 2020

Выражение 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}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...