public class AccountRepository : DataRepositoryBase<Account>, IAccountRepository
{
    protected override Account AddEntity(CarRentalContext entityContext, Account entity)
    {
        return entityContext.AccountSet.Add(entity);
    }

    protected override Account UpdateEntity(CarRentalContext entityContext, Account entity)
    {
        return (from e in entityContext.AccountSet
                where e.AccountId == entity.AccountId
                select e).FirstOrDefault();
    }

    protected override IEnumerable<Account> GetEntities(CarRentalContext entityContext)
    {
        return from e in entityContext.AccountSet
               select e;
    }
    
    protected override Account GetEntity(CarRentalContext entityContext, int id)
    {
        var query = (from e in entityContext.AccountSet
                     where e.AccountId == id
                     select e);
        
        var results = query.FirstOrDefault();

        return results;
    }

    public Account GetByLogin(string login)
    {
        using (CarRentalContext entityContext = new CarRentalContext())
        {
            return (from a in entityContext.AccountSet
                    where a.LoginEmail == login
                    select a).FirstOrDefault();
        }
    }
}