我正在使用漂亮的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));
            }
.

...

我的第一个问题是:

(1)是正确的,排序必须在分页之前完成,并且所有这些都使用延迟加载(即,内部使用实际SQL中的顶部n或其他东西)?

当前MVC Contract网格实现的短暂关注之一是它不允许为定制列(例如组合列值)进行排序:

String.Format("{0} {1}", lab.Proposer.LastName, lab.Proposer.FirstName)
.

(在视图中使用)

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

我已经使用automapper来映射域模型来查看模型,反之亦然。但是,我有一个问题解决了这个解决方案。这仍然使用延迟加载吗?

换句话说,自动应用程序不必先将所有域对象映射到视图对象之前首先进行排序和分页导致性能下降?

我希望这是有道理的,你明白我得到了什么。谢谢。

祝福,

christian

有帮助吗?

解决方案

  1. 是排序和查询(其中某种东西= bla bla)必须在分页前完成,实际上您只有在编写SQL时必须关心这个,否则如果您使用Hibernate或Linq2SQL或类似于您的内容't

  2. 所有automapper正在做的是从一个对象占据一个对象并将其放入另一个对象(涉及的一些数据转换,配置和所有这些东西),除非您在您可以的自定义Valessolver中写一些东西基本上写任何东西,在您可以使用此ValueEresolver for某些特定属性

  3. 之后

    cheers

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top