Entity framework 用于从EF存储库创建MVCController的模式

Entity framework 用于从EF存储库创建MVCController的模式,entity-framework,asp.net-mvc-4,asp.net-mvc-controller,Entity Framework,Asp.net Mvc 4,Asp.net Mvc Controller,[这篇题为:''的博客文章提供了一个很好的概述,介绍了在对基于EF dbContext的对象进行水合时如何控制加载的子对象的深度。这是一个很好的解释,它向存储库提供了Linq表达式 但博客留下了一个悬而未决的问题,通过解释控制器本身的外观,它将真正完善所涉及的工作流程 如果瘦控制器通常被认为是一件好事,并且如果EF正在成熟到主流使用的程度,那么什么模式最适合在存储库和控制器之间进行调解 乔治更喜欢这个问题: 这是完美的,但是怎么做呢 编写控制器以处理对象的所有不同方式 孩子们想被要求吗?这是创造

[这篇题为:''的博客文章提供了一个很好的概述,介绍了在对基于EF dbContext的对象进行水合时如何控制加载的子对象的深度。这是一个很好的解释,它向存储库提供了Linq表达式

但博客留下了一个悬而未决的问题,通过解释控制器本身的外观,它将真正完善所涉及的工作流程

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

乔治更喜欢这个问题:

这是完美的,但是怎么做呢 编写控制器以处理对象的所有不同方式 孩子们想被要求吗?这是创造一个 CustomerOrderController和CustomerOrderLineItemsController

注意:并且可能涉及“如何执行”-我仍然需要对要使用的语法进行概述


mnymnythx

您考虑过使用

在实现一个工作单元模式时,这篇文章比你想要的更深入了一点,这可能是一个好方法。你的标签包括MVC,所以我建议你使用它来帮助保持所有repo和对象的同步

然后,在控制器中的操作中,您可以选择需要包括哪些属性:

 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

如果您不想实现一个工作单元,您可以在控制器中而不是在单元中简单地声明回购协议,并直接进行调用