kia9372 Ответов: 2

Не работает функция в универсальном классе


привет

мне нужно использовать этот код для поиска пользователя :

основной проект :

public MainWindow()
  {
      var usersManagerService = StructureMapDefnation.Container.GetInstance<IUser>();

      var qUser = usersManagerService.Find(x => x.Username == "k" && x.Password == "k");
      InitializeComponent();

  }


EFUesrService :

public class EfUserService : EfGenericService<User>, IUser
    {
        public EfUserService(IUnitOfWork uow) : base(uow)
        {
        }
    }


EFGenericService:
public class EfGenericService<T> : IGenericService<T> where T : class
    {
        protected IUnitOfWork Uow;
        protected IDbSet<T> Entites;

        public EfGenericService(IUnitOfWork uow)
        {
            Uow = uow;
            Entites = Uow.Set<T>();
        }
         public T Find(Func<T, bool> predicate)
        {
            return Entites.Where(predicate).FirstOrDefault();
        }
    }


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

в чем проблема ? как я могу решить эту проблему ?

Что я уже пробовал:

public T Find(Func<T, bool> predicate)
      {
          return Entites.Where(predicate).FirstOrDefault();
      }

Graeme_Grant

сбросьте проверку пароля и посмотрите, можно ли найти пользователя.

kia9372

он не может быть найден

Graeme_Grant

проверьте чувствительность к регистру

2 Ответов

Рейтинг:
2

Graeme_Grant

check for case sensitivity


Рейтинг:
17

Slacker007

Вы ищете строчную букву "К", но прописная буква" К " находится в базе данных. Измените ссылку на код на заглавную букву "К".

В качестве примечания: вам следует пересмотреть свой дизайн поиска, если чувствительность к регистру будет для вас демонстрационной пробкой.


kia9372

я меняю "к" на "Киануш", но он все равно ничего мне не показывает

Graeme_Grant

Именно то, что я сказал выше.

Slacker007

Тогда сделайте это решением, а не комментарием.

Graeme_Grant

- Готово! ;)