最簡單的方法有一個倉庫模式來處理這個問題。這不是最好的辦法。但會給你一個想法,你可以如何處理與存儲庫模式。
創建一個存儲庫做你所有的數據庫事務
public interface IRepository
{
Order GetOrder(int orderId);
}
public class Repository : IRepository
{
YourDBContext db;
public Repository()
{
db = new YourDBContext();
}
public User GetOrder(int orderId)
{
return db.Orders.FirstOrDefault(s=>s.OrderID==orderId);
}
}
您可以在同一個項目中創建這個(「數據訪問邏輯」下),或者爲此創建單獨的類庫(它指無論你在哪裏使用它)。
現在在你的控制器,輸入必要的命名空間後,只需創建你的版本庫的對象,並調用你有興趣
public OrderController :Controller
{
protected IRepository repo;
public OrderController()
{
repo=new Repository();
}
public OrderController(IRepository repositary)
{
// This constructor is for your Unit test project,
// you can pass a mock repository here
// Read dependency injection
repo=repository;
}
public ActionResult details(int id)
{
var order=repo.GetOrder(id);
if(order!=null)
{
return View(order);
}
}
}
的方法,如果認爲您的觀點,您可以考慮使用一個視圖模型需要它。在這種情況下,您需要從您的域對象讀取屬性值並將其設置爲您的視圖模型的實例並將其返回到您的視圖。
隨着代碼/功能的增長,您可以將代碼移動到不同的類/圖層/項目。
我們使用的設置是我們的數據是在模型中定義的,我們的查詢是在我們稱之爲服務的類中定義的,控制器處理所有事情。所以在控制器上創建一個新模型,然後調用服務來填充模型,然後將填充的模型傳遞給視圖 –