我一直在使用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);
使用这样的静态方法有什么问题吗?我只是不明白为什么我需要实例化一个对象才能做到这一点。
答案 0 :(得分:4)
如果您不打算解耦,测试并轻松维护您的“存储库”,我想静态就好了。
如果您想了解更多关于静态方法被认为是代码气味的原因,here's a nice article at the Google Testing Blog。当然,这假设您完全关心测试代码。
但是,嘿,这是2011年,谁不会!
答案 1 :(得分:0)
当您需要多个存储库实例时可能会失败,您可能无法这样做。如果方法是静态的,您也可能无法使用依赖注入。
答案 2 :(得分:0)
我不鼓励在您的存储库中使用静态方法。首先,您不能对存储库使用依赖注入,因为注入的依赖项在静态方法中不可用,仅在实例方法中可用。测试将很困难。