我的存储库方法不应该是静态的吗?

时间:2011-08-19 15:32:51

标签: asp.net-mvc static repository

我一直在使用MVC应用程序并创建操作,验证,更新和读/写数据的存储库。所有这些都是静态的。这是一个例子:

public static int Create(user u)
{
      using(DataContext db = new DataContext())
      {
          //do the thing and submit changes...
      }

      //return the new user id
}
  

(注意:这只是一个示例,我不是在寻找有关创建的提示   用户或返回用户ID等。)

然后我可以致电int id = RepoClassName.Create(userVariable);

使用这样的静态方法有什么问题吗?我只是不明白为什么我需要实例化一个对象才能做到这一点。

3 个答案:

答案 0 :(得分:4)

如果您不打算解耦,测试并轻松维护您的“存储库”,我想静态就好了。

如果您想了解更多关于静态方法被认为是代码气味的原因,here's a nice article at the Google Testing Blog。当然,这假设您完全关心测试代码。

但是,嘿,这是2011年,谁不会!

答案 1 :(得分:0)

当您需要多个存储库实例时可能会失败,您可能无法这样做。如果方法是静态的,您也可能无法使用依赖注入。

答案 2 :(得分:0)

我不鼓励在您的存储库中使用静态方法。首先,您不能对存储库使用依赖注入,因为注入的依赖项在静态方法中不可用,仅在实例方法中可用。测试将很困难。