Recuperar nomes de atributos de uma entidade no MS CRM 4.0
-
03-07-2019 - |
Pergunta
Estou tentando recuperar o nome e o tipo de atributo que existem em uma entidade, a entidade dinâmica é precisa. Eu tenho o seguinte código.
DynamicEntity contactEntity = new DynamicEntity();
contactEntity.Name = EntityName.contact.ToString();
Property t = null;
foreach (Property prop_Test in contactEntity.Properties)
{
Response.Write("<br/>Name : " + prop_Test.Name.ToString());
}
Estou recebendo as propriedades contam como 0.
É obrigatório passar um ID para a entidade de contato. Porque estou tentando mapear atributos da entidade para os atributos que recebo de um arquivo do Excel. O próprio usuário final estaria fazendo o mapeamento para que tudo que eu precise seja o nome e o tipo de atributo e nada mais. Por exemplo, no SQL, temos a consulta
SELECT * FROM TABLE_NAME WHERE 1 <> 1
Essa consulta retorna basicamente um conjunto de resultados vazios apenas com os nomes de campo. É isso que estou procurando aqui. Isso é possível?
Solução
No seu exemplo acima, a entidade dinâmica não possui nenhuma propriedade definida. A entidade dinâmica é um tipo especial no MS CRM usado quando você não conhece o tipo CRM até o tempo de execução. Se você adicionar propriedades à entidade dinâmica e executar seu exemplo, você receberá por mais que devolvam as propriedades que você definirá.
Para obter os atributos de contato, você precisará fazer referência ao serviço de metadados do CRM, conforme explicado no Sdk.
Há um exemplo dentro deste download na seção Howto que mostra como obter a entidade e os metadados do atributo.