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