在我的申请中得到:
类
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;
}
}
在哪里放置逻辑批准用户?
在存储库中?在自己的班级?
我问这个是因为今天是存储库,一旦批准是存储库中存储库中的生产逻辑而不是假的,我就很难对其进行测试。
答案 0 :(得分:1)
存储库是写入数据访问的地方。用户批准更可能是业务流程,因此最好将其与数据访问分开。我会这样做(下面的代码更像是伪代码,而不是完整的生产就绪的东西)
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);
}
}
现在,这已经是可测试代码
了