Задать вопрос
@lucky4

Как избежать дублированности наименования?

Есть продукт, каждый новый продукт должен отличаться названием. Как написать функцию, которая будет просматривать не совпадает ли найменование нового товара с любым другим товаром ?

public async Task<ProductDto> AddAsync(ProductDto item)
        {
            Product product = _mapper.Map<Product>(item);

            if (!await _unitOfWork.ProductRepository.IsDublicated(product.Label))
            {
                throw new DataDublication("Label already exists.");
            }

            await _unitOfWork.ProductRepository.AddAsync(product);

            return _mapper.Map<ProductDto>(product);
        }


public async Task<bool> IsDublicated(string label)
        {
            bool flag = false;

            var check = await _context.Set<Product>()
                .FirstOrDefaultAsync(property => property.Label.ToLower() == label.ToLower());

            return flag;
        }


Знаю, что проблема в функции IsDublicated, что возврощает все время false. Но, не понимаю, как мне закинуть соотвествующий статус после выполнения...
  • Вопрос задан
  • 53 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 2
sarapinit
@sarapinit Куратор тега C#
Точу водой камень
IsDublicated все время возвращает false потому что написана неверно. Вы инициализируете флаг потом возвращаете его без изменений.
Попробуйте так
public async Task<bool> IsDublicated(string label)
{
     var existedProduct = await _context.Set<Product>()
                .FirstOrDefaultAsync(property => property.Label.ToLower() == label.ToLower());
     return existedProduct != null;
}


И в функции AddAsync у вас неверное условие. Должно быть:
if (await _unitOfWork.ProductRepository.IsDublicated(product.Label))
{
     throw new DataDublication("Label already exists.");
}
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Выбирайте из продуктов по StartWith после парусите индекс выбирайте максимальный и вставляйте добавив 1
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы