3 回答
TA贡献1840条经验 获得超5个赞
因此,这样的代码必须位于模型中,而不是在控制器中,不是吗?
不必要。我个人更喜欢将数据访问代码放在存储库中。然后使用构造函数注入将一些特定的存储库实现传递给控制器(例如,如果我使用的是EF,我将编写EF存储库实现)。因此,控制器将如下所示:
public class HomeController: Controller
{
private readonly IMyRepository _repository;
public HomeController(IMyRepository repository)
{
_repository = repository;
}
public ActionResult Edit(int id)
{
var currentTesting = _repository.GetTesting(id);
TryUpdateModel(currentTesting);
_repository.SaveChanges();
return RedirectToAction("Index");
}
}
TA贡献1725条经验 获得超7个赞
由于MVC为您实例化了控制器,因此显示(或解释)如何实际注入存储库可能会很有用。通常,这仅用于通过Mocks进行测试,因此您的控制器可以ActulRepository
在其默认构造函数中创建的实例。但是,新手开发人员可能会对此一视同仁,并且对如何在_repository
不本地实例化实际Repo的情况下产生困惑。
- 3 回答
- 0 关注
- 659 浏览
添加回答
举报