0

[这篇博客文章标题为:'将多个 Include 语句传递到存储库中'提供了一个很好的概述,介绍了在水合基于 EF dbContext 的对象时如何控制加载的子项的深度。用 Linq 表达式提供存储库的一个非常好的解释。

但是该博客留下了一个问题,该问题将通过解释控制器本身的外观来真正完善所涉及的工作流程。

如果瘦控制器通常被认为是一件好事,并且如果 EF 正在成熟到主流使用的程度,那么在存储库和控制器之间最好的调解模式是什么?

乔治更好地表达了这个问题:

这是完美的,但是如何编写控制器来处理对象及其子对象希望被请求的所有不同方式?是创建 CustomerOrderController 和 CustomerOrderLineItemsController 的问题吗?

注意:此链接是由 SO 自动提供的,可能涉及“如何执行”-我仍然需要对要使用的语法进行概述。

关注

4

1 回答 1

0

您是否考虑过使用通用存储库

在实现工作单元模式方面,这篇文章比你想要的更进一步。您的标签包括 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 位的每个项目为真,包括 CollectionToLoad1 和 CollectionToLoad2

如果你不想实现一个工作单元,你可以简单地在控制器而不是单元中声明 repo,然后直接调用。

于 2012-08-03T18:13:51.540 回答