3 回答

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
因此,這樣的代碼必須位于模型中,而不是在控制器中,不是嗎?
不必要。我個(gè)人更喜歡將數(shù)據(jù)訪問(wèn)代碼放在存儲(chǔ)庫(kù)中。然后使用構(gòu)造函數(shù)注入將一些特定的存儲(chǔ)庫(kù)實(shí)現(xiàn)傳遞給控制器(例如,如果我使用的是EF,我將編寫(xiě)EF存儲(chǔ)庫(kù)實(shí)現(xiàn))。因此,控制器將如下所示:
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貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊
由于MVC為您實(shí)例化了控制器,因此顯示(或解釋?zhuān)┤绾螌?shí)際注入存儲(chǔ)庫(kù)可能會(huì)很有用。通常,這僅用于通過(guò)Mocks進(jìn)行測(cè)試,因此您的控制器可以ActulRepository
在其默認(rèn)構(gòu)造函數(shù)中創(chuàng)建的實(shí)例。但是,新手開(kāi)發(fā)人員可能會(huì)對(duì)此一視同仁,并且對(duì)如何在_repository
不本地實(shí)例化實(shí)際Repo的情況下產(chǎn)生困惑。
- 3 回答
- 0 關(guān)注
- 701 瀏覽
添加回答
舉報(bào)