1
我創建了一個簡單的存儲庫類,它是返回項目的列表使用說明:實體框架 - 瓦特/庫中存儲的延遲執行
public class ProjectRepository : IProjectRepository
{
public IQueryable<Project> GetProjects()
{
DbEntities db = new DbEntities();
return db.Projects;
}
}
我有一些代碼後上下行正在關閉此IQueryable的做一些排序/分頁:在using語句是出於習慣
public ActionResult Index()
{
var projectList = (from p in projectRepository.GetProjects()
orderby p.Name
select p).Take(20);
return View(projectList.ToList());
}
我原本包裹着我的GetProjects()調用 - 因爲它通常是爲儘快處理你的對象是個好主意。這引起了一些可以理解的問題,因爲我在控制器操作中做了一些更多的數據庫工作
只是讓對象在垃圾收集器中處理時可以嗎?有沒有更好的方法來做到這一點?我應該創建更有針對性庫的方法,如:
public IQueryable<Project> GetProjects(int takeThisMany)
{
return (from p in db.Projects
orderby p.Name
select p).Take(takeThisMany);
}
這是一個好的或不好的做法,返回將在稍後的時間在一個控制器動作執行IQueryable的對象不設置原始上下文或沒有?
似乎是一種很好的方法。我還沒有真正做過很多DI ......需要決定使用哪個庫。對於從未真正做過DI的人,你會推薦什麼? – Dismissile
我推薦Mark Seeman的書「.NET中的依賴注入」。也就是說,任何具有MVC支持的DI框架都將很容易使用。你不能犯太多錯誤。 –
因此,當你在上下文中進行構造函數注入傳遞時,你的存儲庫將在本地範圍內定義爲你有更多可能的操作方法?在我將庫作爲Controller的實例變量之前,但是如果我在調用某個操作後需要處理,我認爲這不會起作用。 – Dismissile