gpt4 book ai didi

c# - 如何在关系或预取上执行连接或放置 where 子句? (LLBLGen)

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

我有以下代码,我可以通过在线查看一堆不同的资源来拼凑这些代码,但是下面实际上在底线上抛出了空引用异常。

GroupAgentEntity agent = new GroupAgentEntity();

RelationPredicateBucket pred = new RelationPredicateBucket();
pred.PredicateExpression.Add(PredicateFactory.CompareValue(GroupAgentFieldIndex.GroupId, ComparisonOperator.Equal, groupId));
pred.PredicateExpression.Add(PredicateFactory.CompareValue(GroupAgentFieldIndex.IsPrimary, ComparisonOperator.Equal, true));
pred.PredicateExpression.Add(PredicateFactory.CompareValue(GroupAgentFieldIndex.BeginDate, ComparisonOperator.LessEqual, DateTime.Now));
pred.PredicateExpression.Add(PredicateFactory.CompareNull(GroupAgentFieldIndex.EndDate));

pred.Relations.Add(GroupAgentEntity.Relations.AgentSplitGroupEntityUsingAgentSplitGroupId);

IPredicateExpression preFilter = new PredicateExpression(AgentSplitGroupFields.Name == "Broker");

PrefetchPath2 pre = new PrefetchPath2((int)EntityType.AgentSplitGroupEntity);
pre.Add(AgentSplitGroupEntity.PrefetchPathAgentSplitGroup, 0, preFilter);

if (deep)
{
pre.Add(GroupAgentEntity.PrefetchPathBroker);
pre.Add(GroupAgentEntity.PrefetchPathCarrierBroker);
}

this.DataAdapter.FetchEntityUsingUniqueConstraint(agent, pred.PredicateExpression, pre);

我试图做的是从 GroupAgent 表连接到 AgentSplitGroup 表,并预取 AgentSplitGroupEntity 类型的实体。不幸的是,我在 LLBLGen 方面的经验相当有限(尤其是在谓词表达式方面)。

任何人都可以提供任何关于为什么上面的代码在底线抛出空引用异常的想法吗?那,或者如果有人可以帮助我以另一种方式完成我需要的查询(但仍然使用谓词表达式),我将不胜感激。

请注意,我做了显而易见的事情,并在运行时检查了传递给 FetchEntityUsingUniqueConstraint(...) 的参数,没有一个为空。

最佳答案

我不是 LLBLGen 专家,但您可以将 PredicateExpression 更改为:

pred.PredicateExpression.Add(PredicateFactory.CompareValue(GroupAgentFieldIndex.GroupId, ComparisonOperator.Equal, groupId));

与:

pred.PredicateExpression.Add(GroupAgentFields.GroupId == groupId);

其他运营商也可以。 Null 是 DBNull.Value

但我认为你的问题实际上是在Prefetch中,它应该是这样的:

RelationPredicateBucket preFilter = new RelationPredicateBucket();
preFilter.Relations.Add(GroupAgentEntity.Relations.AgentSplitGroupEntityUsingAgentSplitGroupId);
preFilter.PredicateExpression.Add(AgentSplitGroupFields.Name == "Broker");
PrefetchPath2 pre = new PrefetchPath2((int)EntityType.AgentGroupEntity);
pre.Add(AgentGroupEntity.PrefetchPathAgentSplitGroup, 0, preFilter.PredicateExpression, preFilter.Relations);

关于c# - 如何在关系或预取上执行连接或放置 where 子句? (LLBLGen),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20156185/

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