10.11.2010, 01:41 | #1 |
Участник
|
Выбор записей Many-To-Many
Есть две сущности "new_pmrequest"и "new_pmsupreq" ..они между собой связаны Many-To-Many связью "new_new_pmrequest_new_pmsupreqmany". Задача выбрать new_pmrequest который когда-то был ассоциирован с "new_pmsupreq". В списке связанных с ним сущностей я его вижу,но программно получить не получается.. Вот написал такую штуку..
Код: QueryExpression qe = new QueryExpression(); qe.EntityName = "new_pmrequest"; qe.ColumnSet = new AllColumns(); LinkEntity link = new LinkEntity(); link.LinkFromEntityName = "new_pmsupreq"; link.LinkFromAttributeName = "new_pmsupreqid"; link.LinkToEntityName = "new_new_pmrequest_new_pmsupreqmany"; link.LinkToAttributeName = "new_pmsupreqid"; LinkEntity link2 = new LinkEntity(); link2.LinkFromEntityName = "new_new_pmrequest_new_pmsupreqmany"; link2.LinkFromAttributeName = "new_pmrequestid"; link2.LinkToEntityName = "new_pmrequest"; link2.LinkToAttributeName = "new_pmrequestid"; ConditionExpression condition = new ConditionExpression(); condition.AttributeName = "new_pmsupreqid"; condition.Operator = ConditionOperator.Equal; condition.Values = new object[] { "16895420-12EC-DF11-BD73-00155D8E4B06" }; link.LinkCriteria.FilterOperator = LogicalOperator.And; link.LinkCriteria.Conditions.Add(condition); // Add the from and to links to the query. link2.LinkEntities.Add(link); RetrieveMultipleRequest request = new RetrieveMultipleRequest(); request.Query = qe; request.ReturnDynamicEntities = true; RetrieveMultipleResponse response = (RetrieveMultipleResponse)crmService.Execute(request); |
|
10.11.2010, 09:53 | #2 |
Участник
|
Проблема в том что я не привязал к QueryExpression .. Вот тут как-то не понятно ..по логике должно получится что-то вроде
qe.LinkEntities.Add(link); qe.LinkEntities.Add(link2); Но мне выдает ошибку New_pmrequest' entity doesn't contain attribute with Name = 'new_pmsupreqid |
|
10.11.2010, 10:17 | #3 |
Участник
|
Ещё..во всех примерах пишут такую конструкцию intersectEntity.LinkEntities = new LinkEntity[] { nestedLinkEntity }; ..Какого спрашивается? intersectEntity.LinkEntities readonly ошибка
|
|
10.11.2010, 10:33 | #4 |
Участник
|
Похоже просто не с того конца пошел..все заработало..
Код: QueryExpression query = new QueryExpression(); query.EntityName = "new_pmrequest"; query.ColumnSet = new AllColumns(); //query.ColumnSet = new ColumnSet(); //query.ColumnSet.AddColumn("new_pmrequestid"); // Configure the links LinkEntity linkEntity1 = new LinkEntity(); linkEntity1.LinkFromEntityName = "new_pmrequest"; linkEntity1.LinkFromAttributeName = "new_pmrequestid"; linkEntity1.LinkToEntityName = "new_new_pmrequest_new_pmsupreqmany"; linkEntity1.LinkToAttributeName = "new_pmrequestid"; LinkEntity linkEntity2 = new LinkEntity(); linkEntity2.LinkFromEntityName = "new_new_pmrequest_new_pmsupreqmany"; linkEntity2.LinkFromAttributeName = "new_pmsupreqid"; linkEntity2.LinkToEntityName = "new_pmsupreq"; linkEntity2.LinkToAttributeName = "new_pmsupreqid"; // Create the condition to test the contractid ConditionExpression condition = new ConditionExpression(); condition.AttributeName = "new_pmsupreqid"; condition.Operator = ConditionOperator.Equal; condition.Values = new object[] { "16895420-12EC-DF11-BD73-00155D8E4B06" }; // Add the condition to the link linkEntity2.LinkCriteria = new FilterExpression(); linkEntity2.LinkCriteria.AddCondition(condition); // Add the links to the query linkEntity1.LinkEntities.Add( linkEntity2 ); query.LinkEntities.Add( linkEntity1 ); // Configure the retrieve object RetrieveMultipleRequest retrieve = new RetrieveMultipleRequest(); retrieve.ReturnDynamicEntities = true; retrieve.Query = query; // Execute retrieve RetrieveMultipleResponse retrieved = (RetrieveMultipleResponse)crmService.Execute(retrieve); |
|
|
За это сообщение автора поблагодарили: Bondonello (3). |
10.11.2010, 11:30 | #5 |
Kostya Afendikov
|
Еще вариант с использование fetchXml, не помешает
http://mscrm-developer.blogspot.com/...r-many-to.html |
|
|
|