23.06.2017, 09:32 | #1 |
Участник
|
Проблема с 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); Код: 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).
Вопрос: где я накосячил? Также подскажите пригоден ли данный метод авторизации или лучше использовать что то другое? И каким образом можно уменьшить время выполнения запроса? Приложение будет как читать, так и писать данные в срм. |
|
23.06.2017, 16:45 | #2 |
Чайный пьяница
|
У вас проблема в следующей строке:
Код: qe.LinkEntities[2].LinkEntities[0].LinkCriteria.AddCondition(new ConditionExpression("pricelevelid", ConditionOperator.Equal, "pricelevelid"));
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|