gpt4 book ai didi

c# - NHibernate.QueryException 消息 : duplicate association path

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:43 25 4
gpt4 key购买 nike

我有这个代码:

if (pertinentDataExists) {        
List<Entity> operatorList = new List<Operator>();
List<Entity> newOperatorList = criteria.newOperatorList;
foreach (Operator operator in operatorList)
{
operatorList.Add(operator);
}
queryCriteria.CreateCriteria("OperatorList").Add(Restrictions.In("Operator", operatorList));
}

然后是:

if (otherPertinentDataExists) {
Object[] objects = new Object[criteria.newRoleTypeList.Count];
for (int = 0; i < criteria.RoleTypeList.Count; i++) {
objects[i] = criteria.RoleTypeList[i].Id;
}
queryCriteria.CreateCriteria("OperatorList").Add(Restrictions.In("Role", objects));
}

这些单独工作就好了。但是,如果这两种情况都有要添加到列表中的标准,那么我会得到:

NHibernate.QueryException Message : duplicate association path: OperatorList

如果条件已创建,我如何为 Role 添加限制?

最佳答案

有两种选择。首先,如果可能(在同一方法中),创建 Criteria 并将它们作为局部变量引用:

var operatorListCriteria = queryCriteria.CreateCriteria("OperatorList");

if ( myCondition1 )
{
operatorListCriteria.Add(...
}
if ( myCondition2 )
{
operatorListCriteria.Add(...
}

第二步,使用“别名”创建条件,之后,您可以在任何地方使用 GetCriteriaByAlias(aliasPath) 找到它们:

var aliasPath = "OperatorListAlias";
var operatorListCriteria = queryCriteria.CreateCriteria("OperatorList", aliasPath);
...
// later find them by aliasPath
var subCriteria = queryCriteria.GetCriteriaByAlias(aliasPath);

注意:同时检查 GetCriteriaByPath(associationPath)

关于c# - NHibernate.QueryException 消息 : duplicate association path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14148046/

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