gpt4 book ai didi

asp.net-mvc - automapper + 延迟加载 + mvc contrib 网格 + s#arp 存储库

转载 作者:行者123 更新时间:2023-12-01 06:51:32 25 4
gpt4 key购买 nike

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

(在 View 中使用)

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

过去我曾使用 automapper 将域模型映射到查看模型,反之亦然。但是,我对此解决方案有一个问题。这仍然可以使用延迟加载吗?

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

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

最好的祝愿,

基督教

最佳答案

  • 是的,排序和查询(where something = bla bla)必须在分页之前完成,实际上只有在编写 sql 时才需要关心这一点,否则如果您使用 hibernate 或 linq2sql 或类似的东西而不是
  • 所有 automapper 所做的都是从一个对象中获取值并将其放入另一个对象中(涉及一些数据转换、配置和所有这些东西),除非您在自定义 valueresolver 中编写一些东西,在那里您基本上可以写任何东西,然后在您之后可以将此 valueresolver 用于某些特定属性

  • 干杯

    关于asp.net-mvc - automapper + 延迟加载 + mvc contrib 网格 + s#arp 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3253633/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com