gpt4 book ai didi

c# - 在 llblgen 2.6 中对相关字段进行排序

转载 作者:行者123 更新时间:2023-11-30 22:37:30 26 4
gpt4 key购买 nike

我继承了一个使用 llblgen 2.6 的应用程序。我有一个具有 AppointmentType 属性(n:1 关系)的 PersonAppointmentType 实体。现在我想根据 AppointmentType 的名称对 PersonAppointmentTypes 的集合进行排序。到目前为止,我在 Page_Load 中尝试过:

    if (!Page.IsPostBack)
{
var p = new PrefetchPath(EntityType.PersonAppointmentTypeEntity);
p.Add(PersonAppointmentTypeEntity.PrefetchPathAppointmentType);

dsItems.PrefetchPathToUse = p;
// dsItems.SorterToUse = new SortExpression(new SortClause(PersonAppointmentTypeFields.StartDate, SortOperator.Ascending)); // This works
dsItems.SorterToUse = new SortExpression(new SortClause(AppointmentTypeFields.Name, SortOperator.Ascending));
}

我可能只是不明白。

编辑:Phil 让我走上了正确的轨道,这很有效:

    if (!Page.IsPostBack)
{
dsItems.RelationsToUse = new RelationCollection(PersonAppointmentTypeEntity.Relations.AppointmentTypeEntityUsingAppointmentTypeId);
dsItems.SorterToUse = new SortExpression(new SortClause(AppointmentTypeFields.Name, SortOperator.Ascending));
}

最佳答案

如果您想要一个精确的解决方案,您将需要共享更多代码。您没有在实际获取实体(或集合)的地方发布代码。这可能看起来不相关,但它(可能)是,因为我猜你犯了一个常见的错误,人们在第一次尝试对相关实体进行排序或过滤时会犯预取路径。

您有一个从 PersonAppointmentType (PAT) 到 AppointType (AT) 的预取路径。这基本上告诉框架将 PAT 作为一个查询获取,然后在该查询完成后,根据 PAT 查询的结果获取 AT。 LLBLGen 会为您处理所有这一切,并在查询完成后将对象连接在一起。

您要做的是根据您在第二个查询中获取的实体对第一个查询进行排序。如果您从 SQL 的角度考虑,您需要在第一个查询中从 PAT=>AT 进行连接。为此,您需要通过 RelationPredicateBucket 添加关系(连接)并将其作为提取调用的一部分传递。

乍一看似乎违反直觉,但关系和预取路径是完全不相关的(尽管您可以将它们一起使用)。您甚至可能根本不需要预取路径;可能您只需要将关系和排序子句添加到您的获取代码中(取决于您是否真的想要图表中的 AT Entity,以及按其字段排序的能力)。

有一个关于预取路径的很好的解释以及它们是如何出现的:

http://www.llblgening.com/archive/2009/10/prefetchpaths-in-depth/

把你剩下的提取代码贴出来,我也许能给你一个更准确的答案。

关于c# - 在 llblgen 2.6 中对相关字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6507940/

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