這是一個普遍的問題:當您使用實體框架搭建一個項目時,控制器將使用數據庫連接並將類似ID的東西傳遞給它並將模型返回到您的視圖。爲什麼腳手架的MVC應用程序在控制器中有數據訪問
它不應該將ID傳遞給您的模型,然後處理查詢邏輯?
這是我在MVC數據訪問的理解應該在你的模型中這樣做有類似以下內容:
public ActionResult Customer(int id)
{
View(db.Customers.FirstOrDefault(x => x.id = id)) //Where this view accepts a CustomerModel
}
應該
public ActionResult Customer(int id)
{
var model = new CustomerModel(id) //Get customer logic is done within the model
View(model)
}
我看到了很多的第一個例子中當建立一個腳手架的項目。特別是對於自動生成的Edit
功能。這些CRUD操作不應該放在模型中嗎?或者這是Entity Framework獨有的東西?
如果您將EF排除在等式之外,那麼將處理模型中的所有CRUD函數是設計它的正確方法?
這無疑使事情變得更加清晰。我沒有把兩者區分開來。所以如果你想遵守行業MVC標準,你會簡單地創建自己的模型來實現或擴展實體嗎?通過這種方式,您可以在保持控制器對數據訪問無視的同時,執行所有的粗暴操作。 –
這幾乎是你的服務/存儲庫。它將是一個類,它提供了一組返回特定數據集或執行應用程序所需的特定操作的方法。控制器*將*依賴於這個類,但實際的數據庫邏輯可以不在控制器之外。 –
非常好,這回答了我在MVC和微軟版本之間看到的很多差異。 –