Drnamics CRM - Добавить - Проверка, существует ли сущность - PullRequest
0 голосов
/ 14 сентября 2009

Я работаю над проектом, начатым кем-то другим, и пытаюсь исправить несколько ошибок. Существует пользовательский объект, который содержит список объектов для обработки. Однако, если пользовательский объект удаляется и список не обновляется, возникает ошибка.

Я хотел бы добавить проверку, которая гарантирует, что каждая обрабатываемая сущность проверяется, чтобы убедиться, что она существует первой.

Возможно ли это в CRM, если так, то как лучше? Обратите внимание, что это было написано в C # 2008.

[править] Примечание: у меня есть только имя объекта для использования. [конец редактирования] Спасибо

Ответы [ 2 ]

3 голосов
/ 14 сентября 2009

Используйте службу метаданных CRM ( образец кода метаданных из MSDN для CRM 4 ). Вы можете получить список всех сущностей (RetrieveAllEntitiesRequest) и затем каждый раз проверять в цикле, есть ли сущность в этом списке.

0 голосов
/ 11 августа 2017

Для более новых версий CRM вы можете использовать MetadataFilterExpression , чтобы запросить только интересующую вас сущность:

var entityName = "WHATEVER";

var entityFilter = new MetadataFilterExpression(LogicalOperator.And);
entityFilter.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityName));

// we don't need all of the metadata, so we can just ask for a couple of basic things
var mpe = new MetadataPropertiesExpression()
{
    AllProperties = false,
    PropertyNames = {"DisplayName", "ObjectTypeCode", "PrimaryIdAttribute", "PrimaryNameAttribute"}
};

var entityQueryExpression = new EntityQueryExpression()
{
    Criteria = entityFilter,
    Properties = mpe
};

var retrieveMetadataChangesRequest = new RetrieveMetadataChangesRequest()
{
    Query = entityQueryExpression
};

var metadataResponse = (RetrieveMetadataChangesResponse)orgService.Execute(retrieveMetadataChangesRequest);

if (metadataResponse.EntityMetadata.Count == 0)
{
    // does not exist
    Console.WriteLine(entityName + " was not found.");
}
else if (metadataResponse.EntityMetadata.Count == 1)
{
    // found entity
    Console.WriteLine(entityName + " was found.");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...