我有一个带有存储库层和WebUI层的Web应用程序。
基本上我用一些来自这个存储库dll的数据填充一些网格。其实我是这样做的:
private DemoRepository _demoRepository;
public DemoController()
{
_demoRepository = new DemoRepository();
}
public ActionResult Demonstration()
{
return View(_demoRepository.GetAll());
}
我的问题是,实际上我不需要每次都创建一个对象,所以我可以使DemoRepository静态并直接在ActionResult方法中调用:
public ActionResult Demonstration()
{
return View(DemoRepository.GetAll());
}
但除此之外我知道在Web应用程序中使用静态变量并不是一个好习惯,但在这种情况下我正在执行一个获取某些数据的方法,这是正确的吗?
答案 0 :(得分:1)
静态方法不会伤害,只要静态方法接收方法调用中的所有依赖项作为参数,并且不会为方法调用内的存储库全局更改任何内容。
如果你要违反这两件事之一(即:通过属性进行DI或使用连接字符串的魔法),那么我会坚持实例化存储库并调用其GetAll()方法。