2015-04-15 2 views
4

Работа с CRM 2013, как я могу получить список всех объектов в CRM через класс connectionManager? Я хочу получить все объекты для текущего соединения.Dynamics CRM как получить список всех объектов

+0

Если вам нужно только перечислили сущности, присутствующие в CRM, вы можете установить управляемое решение SDK. он должен находиться в папке SDK Tools \ MetadataBrowser \ в виде zip-файла. https://msdn.microsoft.com/en-us/library/hh547411.aspx Кроме того, yo может использовать приложение DumpEntityInfo в SampleCode \ CS \ Metadata \ Entities (C#), которое создает XML-файл со всеми объектами в настоящее время в системе. – Analyst

ответ

6

Спасибо за Ваш комментарий и ответить на его работу сейчас, это моя функция

public static EntityMetadata[] GetEntities (IOrganizationService organizationService) 
{ 
    Dictionary<string, string> attributesData = new Dictionary<string, string>(); 
    RetrieveAllEntitiesRequest metaDataRequest = new RetrieveAllEntitiesRequest(); 
    RetrieveAllEntitiesResponse metaDataResponse = new RetrieveAllEntitiesResponse(); 
    metaDataRequest.EntityFilters = EntityFilters.Entity; 

    // Execute the request. 

    metaDataResponse = (RetrieveAllEntitiesResponse)organizationService.Execute(metaDataRequest); 

    var entities = metaDataResponse.EntityMetadata; 

    return entities; 
} 

и я называю свою функцию в виде окна приложения, как это: var allEntities = CRMHelpers.GetEntities(service); foreach (EntityMetadata Entity in allEntities) { cbxEntity.Items.Add(Entity.LogicalName); }

+1

Почему вы создаете новый объект ответа, чтобы просто выбросить его несколько строк? - и для чего предназначен объект Dictionary? - Кажется, он нигде не используется. – BrainSlugs83

3

Если вы ищете получение метаданных объекта с использованием кода (C#), то у нас есть встроенные сообщения, чтобы получить все сущности и, если необходимо, информацию об уровне атрибута. Вы можете использовать сообщение «RetrieveAllEntitiesRequest». Примерный код будет таким, чтобы достичь того же.

RetrieveAllEntitiesRequest retrieveAllEntityRequest = new RetrieveAllEntitiesRequest 
{ 
    RetrieveAsIfPublished = true, 
    EntityFilters = EntityFilters.Attributes 
}; 
RetrieveAllEntitiesResponse retrieveAllEntityResponse = (RetrieveAllEntitiesResponse)serviceProxy.Execute(retrieveAllEntityRequest); 

Если вам нужно, чтобы получить конкретную информацию лица, то вы можете использовать сообщение «RetrieveEntityRequest». Образец для этого был бы следующим:

RetrieveEntityRequest entityRequest = new RetrieveEntityRequest 
{ 
    EntityFilters = EntityFilters.Attributes, 
    LogicalName = entityName, 
    RetrieveAsIfPublished = true 
}; 
RetrieveEntityResponse entityResponse = (RetrieveEntityResponse)serviceProxy.Execute(entityRequest); 

Надеюсь, это то, что вы искали. Сообщите нам, если вам нужна дополнительная информация.

+0

Спасибо за ваш ответ, но когда я вызываю свою функцию GetEntities VS перестает работать, это моя функция: – yosss

+0

public static EntityMetadata [] GetEntities (служба IOrganizationService) {RetrieveAllEntitiesRequest Request = new RetrieveAllEntitiesRequest(); RetrieveAllEntitiesResponse Response = new RetrieveAllEntitiesResponse(); Request.EntityFilters = EntityFilters.All; Response = (RetrieveAllEntitiesResponse) service.Execute (Request); var entities = Response.EntityMetadata; возвращаемые объекты; } и я вызываю свою функцию в форме загрузки, как и var allEntities = CRMHelpers.GetEntities (service); foreach (EntityMetadata Entity in allEntities) {cbxEntity.Items.Add (Entity.LogicalName);} – yosss

+0

Неужели он перестает работать (например, бросил какое-то исключение?) Или занял некоторое время. Я заметил, что получение метаданных обычно занимает больше времени по сравнению с обычной выборкой данных. – Renjith

Смежные вопросы