2010-07-15 51 views
4

我现在用的是漂亮的小号#ARP信息库和寻呼扩展方法加上排序是这样的:automapper +延迟加载+ MVC的contrib电网+ 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)它是正确的,因为排序具有分页之前完成,而这一切使用延迟加载(即在内部使用TOP n或东西在实际的SQL)?

一个当前MVC的contrib网格执行短缺憾的是,它不允许排序为自定义列(例如组合的列值)像这样:

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

(在视图中使用)

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

我已经使用automapper映射域模型,在过去查看模式,反之亦然。但是,我有这个解决方案的一个问题。这仍然工作使用延迟加载?

换句话说不automapper不必所有域对象首先映射到视图的对象之前它可以做排序和分页导致性能降低?

我希望这是有道理的,你明白我在做什么。谢谢。

最良好的祝愿,

基督教

回答

-1
  1. 是整理和查询(其中一些= BLA BLA)具有分页之前完成,实际上你要关心这个只有当你写sql,否则如果你使用休眠或linq2sql或类似的东西你不

  2. 所有automapper正在做的是从一个对象的价值观,并把它放入另一个对象(有一些数据转换涉及,配置和所有th在东西),除非你写的一些东西,在一个自定义valueresolver,你基本上可以写任何东西,之后您可以使用此valueresolver对于一些特定的属性

干杯