Asp.net mvc automapper+;延迟加载+;mvc contrib网格&x2B;s#arp存储库

Asp.net mvc automapper+;延迟加载+;mvc contrib网格&x2B;s#arp存储库,asp.net-mvc,asp.net-mvc-2,automapper,s#arp-architecture,Asp.net Mvc,Asp.net Mvc 2,Automapper,S#arp Architecture,我使用的是尼斯s#arp存储库和分页扩展方法加上排序,如下所示: public ViewResult Index(int? page, GridSortOptions sort) { ViewData["sort"] = sort; if (!string.IsNullOrEmpty(sort.Column)) { return View(this.LabService.G

我使用的是尼斯s#arp存储库和分页扩展方法加上排序,如下所示:

public ViewResult Index(int? page, GridSortOptions sort) 
        {
            ViewData["sort"] = sort;

            if (!string.IsNullOrEmpty(sort.Column))
            {
                return View(this.LabService.GetAllLabs().OrderBy(sort.Column, sort.Direction).AsPagination(page ?? 1, 10));
            }
String.Format("{0} {1}", lab.Proposer.LastName, lab.Proposer.FirstName)

我的第一个问题是:

(1) 排序必须在分页之前完成,并且所有这些都使用延迟加载(即内部使用TOP n或实际SQL中的某个内容),这是否正确

当前mvc contrib网格实现的一个缺点是不允许对自定义列(例如组合列值)进行排序,如下所示:

public ViewResult Index(int? page, GridSortOptions sort) 
        {
            ViewData["sort"] = sort;

            if (!string.IsNullOrEmpty(sort.Column))
            {
                return View(this.LabService.GetAllLabs().OrderBy(sort.Column, sort.Direction).AsPagination(page ?? 1, 10));
            }
String.Format("{0} {1}", lab.Proposer.LastName, lab.Proposer.FirstName)
(在视图中使用)

在我相当简单的s#arp解决方案中,我试图避免使用视图模型,但在这种情况下,也许我可以使用视图模型来允许按自定义列进行排序

在过去,我使用automapper将域模型映射到视图模型,反之亦然。但是,我对这个解决方案有一个问题。使用延迟加载是否仍然有效

换句话说,automapper是否不必先将所有域对象映射到视图对象,然后才能进行排序和分页,从而降低性能

我希望这是有道理的,你明白我的意思。谢谢

致以最良好的祝愿

基督教徒

  • 是的,在分页之前必须进行排序和查询(其中something=bla-bla),实际上,只有在编写sql时才需要考虑这一点,否则,如果使用hibernate或linq2sql或类似的东西,则不需要考虑这一点

  • automapper所做的只是从一个对象中获取值并将其放入另一个对象中(涉及一些数据转换、配置和所有这些内容),除非您在自定义valueresolver中编写一些内容,在自定义valueresolver中您基本上可以编写任何内容,然后您可以将该valueresolver用于某些特定属性

  • 干杯