我有一个我正在研究的ASP.NET MVC 2项目,我想知道我应该在哪里放置一些代码。
我目前有一个UsersModel,它由一堆针对我的数据上下文操作的静态方法组成。
这些方法包括:UserExistsInDatabase
,UserIsRegisteredForActivity
,GetUserIdFromFacebookId
等等。
这些方法应该在UsersModel类中,还是更适合模型上下文之外的用户帮助类?
欢呼任何指针。
答案 0 :(得分:5)
不要使用静态方法。在存储库中抽象它们:
public interface IUsersRepository
{
bool UserExistsInDatabase(User user);
bool UserIsRegisteredForActivity(User user);
...
}
然后针对某些数据存储实现:
public class UsersRepository : IUsersRepository
{
...
}
最后为您的控制器提供此存储库的一个实例,以便它可以与用户一起使用:
public class HomeController : Controller
{
private readonly IUsersRepository _repository;
public HomeController(IUsersRepository repository)
{
// the repository is injected into the controller by the DI framework
_repository = repository;
}
// ... some action methods that will use the repository
}
答案 1 :(得分:1)
我认为我们应该避免使用静态方法,因为它会在模拟中出现问题。这些方法更适合UserRespository / UserService类。
答案 2 :(得分:0)
听起来像具有属性/功能的“用户”类:
* ExistsInDatabase,
* IsRegisteredForActivity,
* GetIdFromFacebookId
答案 3 :(得分:0)
其中任何一个选项都可以。或者,您可以将它们定义为扩展方法,并将它们直接附加到用户类。
HTH。