Где поставить логику Одобрению пользователя? - PullRequest
0 голосов
/ 08 октября 2011

В мое приложение попали:

Классы

public class User
{
    [Key]
    public Guid Id { get; set; }
    public string Name { get; set; }
    public bool IsApproved { get; set; }
}

public class DataContext : DbContext
{
     DbSet<User> Users { get; set; }
}

public class Repository
{
    DataContext db = new DataContext();

    public bool ApproveUser(User usr) //This is correct place?
    {
        usr.IsApproved = true;
        db.Attrach(usr);
        return db.SaveChanges() > 0;
    }
}

Вопрос

Куда выкладывается логика одобрения пользователя?

ВRepository?В своем классе?

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

1 Ответ

1 голос
/ 08 октября 2011

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

public interface IUserRepository
{
    bool Save();
}

public class UserRepository : IUserRepository
{
    public bool Save(User user)
    {
        db.Attrach(user);
        return db.SaveChanges() > 0;
    }
}

public interface IUserService
{
   bool Approve(User user);
}

public class UserService : IUserService
{
   readonly IUserRepository _userRepository;

   public UserService(IUserRepository userRepository)
   { 
      _userRepository = userRepository;
   }

   public bool Approve(User user)
   {
     user.IsApproved = true;
     return _repository.Save(User user);
   }
}

А теперь это уже тестируемый код

...