Проверьте логин пользователя, используя шаблон репозитория C#

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

У меня есть этот репозиторий в моем BusinessLogicLayer:

public interface IUserRepository
{
    LogIn GetByUsernameAndPassword(LogIn user);
}

и в моем слое доступа к данным

class UserRepository : IUserRepository
{
    ChatAppDBContext _db = new ChatAppDBContext();
    public LogIn GetByUsernameAndPassword(LogIn login)
    {
        return _db.Users.Where(u => u.Email == login.Email & u.Password == login.UserPassword).FirstOrDefault();
    }
}

но выдает ошибку, что Ошибка:

Не удается неявно преобразовать тип "DataAccessLayer.User" в "BusinessLogicLayer.Model.LogIn"

Как я могу решить это?

2 ответа

Решение
class UserRepository : IUserRepository
{
    ChatAppDBContext _db = new ChatAppDBContext();
    public Login GetByUsernameAndPassword(LogIn login)
    {
         var userResult = _db.Users.FirstOrDefault(u => u.Email == login.Email & u.Password == login.UserPassword);

         if (userResult == null)
             // throw new Exception() or return new Login();

         Login loginResult = new Login();
         loginResult.Email = userResult.Email;
         return loginResult;                    
    }
}

@ Олувафеми правильно. Вам просто нужно создать пользовательскую "модель просмотра", чтобы вернуться.

class UserRepository : IUserRepository
{
       ChatAppDBContext _db = new ChatAppDBContext();
       public UserModel GetByUsernameAndPassword(LogIn login)
       {
           return _db.Users
             .Where(u => u.Email == login.Email & u.Password == login.UserPassword)
             .FirstOrDefault()
             .Select(x => new UserModel
             {
                  Name = x.Name
             });
       }
}

public class UserModel
{
   public string Name { get; set; }
}
Другие вопросы по тегам