[此博客文章标题为:'Passing multiple Include statements into a Repository'提供了如何在对基于EF dbContext的对象进行保湿时控制加载的子项深度的概述。使用Linq表达式提供存储库的一个非常好的解释。
但博客留下了一个问题,通过解释控制器本身的外观,真正完善了所涉及的工作流程。
如果瘦控制器通常同意是好事,并且如果EF正在成熟到主流使用的程度,那么哪种模式最好在存储库和控制器之间进行调解?
乔治更好地表达了这个问题:
这很完美,但是怎么做 一个写控制器来处理一个对象的所有不同方式 并且它的孩子想要被要求吗?这是创建一个问题吗? CustomerOrderController和CustomerOrderLineItemsController?
注意:This link is auto-offered by SO并且可能会解决'如何执行' - 我仍然需要概述要使用的语法。
mnymnythx
答案 0 :(得分:0)
您是否考虑过使用generic repository?
在实施工作单元模式时,文章比你想要的更好。您的标签包含MVC,因此我建议您使用此标签来帮助保持所有存储库和对象同步。
然后,在控制器中的操作中,您可以选择需要包含哪些属性:
private UnitOfWork _unitOfWork;
public YourController()
{
_unitOfWork = new UnitOfWork();
}
//
// GET: /Market/
public ActionResult Index()
{
return View(_unit.YourRepository.Get(m => m.IsActive, null, "CollectionToLoad1,CollectionToLoad2"));
}
在这个例子中,我会得到IsActive位为true的每个项目,以及包括CollectionToLoad1和CollectionToLoad2
如果你不想实现一个工作单元,你可以简单地在控制器而不是单元中声明repo,并直接进行调用。