Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 我的存储库方法不应该是静态的,有什么原因吗?_Asp.net Mvc_Static_Repository - Fatal编程技术网

Asp.net mvc 我的存储库方法不应该是静态的,有什么原因吗?

Asp.net mvc 我的存储库方法不应该是静态的,有什么原因吗?,asp.net-mvc,static,repository,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 } (注意:这只是一个示例,我不是

我一直在使用一个MVC应用程序,创建操作、验证、更新和读/写数据的存储库。它们都是静态的。以下是一个例子:

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

      //return the new user id
}
(注意:这只是一个示例,我不是在寻找关于创建 用户或返回用户ID等)

然后我可以调用
intid=RepoClassName.Create(userVariable)


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

如果您不打算解耦、测试和轻松维护您的“存储库”,我想静态就可以了

如果您想更多地了解为什么静态方法被视为代码气味。当然,这假设您根本不关心代码的测试


但是,嘿,现在是2011年,谁不会呢

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

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

我不明白。想详细说明一下吗?每个人似乎都说了同样的话,但实际上没有解释任何事情。