Проверьте логин пользователя, используя шаблон репозитория 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; }
}