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條經驗 獲得超8個贊
由于MVC為您實例化了控制器,因此顯示(或解釋)如何實際注入存儲庫可能會很有用。通常,這僅用于通過Mocks進行測試,因此您的控制器可以ActulRepository
在其默認構造函數中創建的實例。但是,新手開發人員可能會對此一視同仁,并且對如何在_repository
不本地實例化實際Repo的情況下產生困惑。
- 3 回答
- 0 關注
- 693 瀏覽
添加回答
舉報