AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.06.2017, 09:32   #1  
ajlewa is offline
ajlewa
Участник
 
11 / 10 (1) +
Регистрация: 10.08.2015
Проблема с LinkEntities
Приветствую Коллеги,
столкнулся со следующей проблемой:
Пишу приложение на asp.net mvc и нужно вытащить инфо из СРМ 2011 из нескольких сущностей.
получился следующий код:
Код:
List<Event> _events = new List<Event>();
var serverAndOrgName = "http://crm.local/organization";
var orgServiceUri = new Uri(serverAndOrgName + "/XRMServices/2011/Organization.svc");
var orgConfiguration = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(orgServiceUri);
var credentials = new ClientCredentials();
credentials.Windows.ClientCredential = new NetworkCredential("user", "123", "LOCAL");
OrganizationServiceProxy _service = new OrganizationServiceProxy(orgConfiguration, credentials);
OrganizationServiceContext _context = new OrganizationServiceContext(_service);
QueryExpression qe = new QueryExpression();
qe.EntityName = "new_event";
qe.ColumnSet = new ColumnSet();
qe.ColumnSet.Columns.Add("new_fullname");
qe.ColumnSet.Columns.Add("new_startdate");
qe.ColumnSet.Columns.Add("new_numberofdays");
qe.LinkEntities.Add(new LinkEntity("new_event", "new_city", "new_cityid", "new_cityid", JoinOperator.LeftOuter));
qe.LinkEntities[0].Columns.AddColumns("new_country", "new_name_ru");
qe.LinkEntities[0].EntityAlias = "city";
qe.LinkEntities.Add(new LinkEntity("new_coursetype", "new_coursetype", "new_coursetypeid", "new_coursetypeid", JoinOperator.LeftOuter));
qe.LinkEntities[1].Columns.AddColumns("new_trackidname");
qe.LinkEntities[1].EntityAlias = "coursetype";
qe.LinkEntities.Add(new LinkEntity("new_event", "product", "new_productid", "productid", JoinOperator.LeftOuter));
qe.LinkEntities[2].EntityAlias = "product";
qe.LinkEntities[2].LinkEntities.Add(new LinkEntity("product", "productpricelevel", "productid", "productid", JoinOperator.LeftOuter));
qe.LinkEntities[2].LinkEntities[0].LinkCriteria.AddFilter(new FilterExpression(LogicalOperator.And));
qe.LinkEntities[2].LinkEntities[0].LinkCriteria.AddCondition(new ConditionExpression("pricelevelid", ConditionOperator.Equal, "pricelevelid"));
qe.LinkEntities[2].LinkEntities[0].Columns.AddColumns("amount_base");
qe.LinkEntities[2].LinkEntities[0].EntityAlias = "price";
qe.Criteria.AddCondition("new_startdate", ConditionOperator.Equal, date);
qe.Criteria.AddCondition("be_webvisible", ConditionOperator.Equal, true);
Проблема возникает в связывании сущность product и productpricelevel, нужно связать по двум аттрибутам productid и pricelevelid, для этого использую такой код:
Код:
qe.LinkEntities[2].LinkEntities.Add(new LinkEntity("product", "productpricelevel", "productid", "productid", JoinOperator.LeftOuter));
qe.LinkEntities[2].LinkEntities[0].LinkCriteria.AddFilter(new FilterExpression(LogicalOperator.And));
qe.LinkEntities[2].LinkEntities[0].LinkCriteria.AddCondition(new ConditionExpression("pricelevelid", ConditionOperator.Equal, "pricelevelid"));
qe.LinkEntities[2].LinkEntities[0].Columns.AddColumns("amount_base");
qe.LinkEntities[2].LinkEntities[0].EntityAlias = "price";
приложение выдаёт исключение:
Цитата:
An exception System.FormatException was thrown while trying to convert input value 'pricelevelid' to attribute 'productpricelevel.pricelevelid'. Expected type of attribute value: System.Guid. Exception raised: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Хотя оба аттрибута являются Guid'ами.

Вопрос: где я накосячил?

Также подскажите пригоден ли данный метод авторизации или лучше использовать что то другое?
И каким образом можно уменьшить время выполнения запроса?
Приложение будет как читать, так и писать данные в срм.
Старый 23.06.2017, 16:45   #2  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
У вас проблема в следующей строке:

Код:
qe.LinkEntities[2].LinkEntities[0].LinkCriteria.AddCondition(new ConditionExpression("pricelevelid", ConditionOperator.Equal, "pricelevelid"));
Переводя на человеческий - дай мне записи, у которых поле pricelevelid равняется текстовому значению "pricelevelid". Вы передаёте туда строку, а необходимо - Guid. Отталкивайтесь в исправлении от этого.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с диаграммами ntr Dynamics CRM: Администрирование 3 16.01.2015 10:50
Проблема с действиями сервиса(CRM 4.0) Archon Dynamics CRM: Функционал 6 08.07.2009 14:33
Странная проблема с вводом дат William Orbit Dynamics CRM: Администрирование 10 26.02.2009 10:34
Проблема при создании мероприятия ShurikEv Dynamics CRM: Функционал 2 03.11.2008 18:26
Мир CRM: Проблема при переназначении объекта. Blog bot Dynamics CRM: Blogs 1 20.10.2008 09:28

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:44.