我的仓库方法为什么不应该是静态的?

10

我一直在使用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个回答

6

如果您不打算将“存储库”解耦、测试和轻松维护,那么静态方法就可以了。

如果您想了解为什么静态方法被认为是一种代码异味,这里有一篇很好的文章在Google测试博客上。当然,这假定您关心测试您的代码。

但是,嘿,现在已经是2011年了,谁不关心呢!


7
我不明白,请详细说明一下。每个人好像都说了同样的话,却没有真正解释任何内容。 - MetaGuru

0

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


0
我不鼓励在您的存储库中使用静态方法。首先,您不能使用依赖注入来管理您的存储库,因为注入的依赖项不会在静态方法中生效,只会在实例方法中生效。这会导致测试变得非常困难。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接