Asp.net mvc 我的存储库方法不应该是静态的,有什么原因吗?
我一直在使用一个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 } (注意:这只是一个示例,我不是
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年,谁不会呢 当您需要多个存储库实例时,您可能无法这样做。另外,如果方法是静态的,您可能无法使用依赖项注入。我不鼓励在存储库中使用静态方法。首先,您不能对存储库使用依赖项注入,因为注入的依赖项在静态方法中不可用,只有在实例方法中可用。测试会很困难。我不明白。想详细说明一下吗?每个人似乎都说了同样的话,但实际上没有解释任何事情。