我目前正在处理的页面根据他们所在的投资组合搜索各种实体。为了应用其他搜索条件(除了投资组合),页面首先按投资组合获取实体,然后将条件应用于它们,如此处所示:
IPortfolioLogic logic = this.objectFactory.GetObject<IPortfolioLogic>(this.dal);
PortfolioEntity portfolio = logic.GetPortfolioByID(this.context, this.dal, requestDto.Portfolio.UniqueID);
var unfilteredEntities = portfolio.EntityGroupEntity.EntityGroupItemList.Select(i=>i.EntityID);
IList<EntityEntity> entities = criteria.ApplyTo<EntityEntity>(unfilteredEntities);
最后一行将其发送到此代码:
public IList<T> ApplyTo<T>(IEnumerable<T> list) {
IList tmpList = this.ApplyTo(list, typeof(T));
IList<T> resultList;
if (tmpList == null) {
resultList = null;
}
else {
resultList = new List<T>();
foreach (object tmp in tmpList) {
resultList.Add((T)tmp);
}
}
return resultList;
}
public IList ApplyTo(IEnumerable list, Type entitiesType) {
return this.GetEvaluator().ApplyTo(list, entitiesType);
}
从这里开始,它会抓取那些与投资组合相关的、也符合标准的特定实体。
在我的本地机器上,这工作得很好。它找到实体,并对它们执行标准。但是,在我们的农场中,会显示以下消息:
Message: Error #0e3c57ad-a834-47ab-996a-deecb80fccca
Ambiguous match found.:
在打印出来的堆栈跟踪中,它转到上面提到的那些行。所有其他位置都经常被其他进程使用,并且他们之前都没有遇到过这个问题。上面提到的行是唯一不同的地方。
有任何想法吗?