Страница, над которой я сейчас работаю, выполняет поиск различных сущностей в зависимости от того, в каком портфеле они находятся. Чтобы применить другие критерии поиска (кроме портфолио), страница сначала получает сущности по портфелю, а затем применяет критериидля них, как показано здесь:
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.:
В распечатанной трассировке стека она переходит к тем строкам, которые упомянуты выше.Все остальные местоположения часто используются другими процессами, и ни один из них ранее не сталкивался с этой проблемой.Упомянутые выше строки - единственное, что отличается.
Есть идеи?