C# Dynamics CRM如何获取所有实体的列表

C# Dynamics CRM如何获取所有实体的列表,c#,crm,C#,Crm,使用CRM 2013,如何通过connectionManager类获取CRM中所有实体的列表?我想获取当前连接的所有实体。如果您希望使用代码(C#)获取实体元数据,那么我们有内置消息来获取所有实体以及所需的属性级别信息。您可以使用消息“RetrieveAllentiesRequest”。下面是一个示例代码,以实现相同的功能 RetrieveAllEntitiesRequest retrieveAllEntityRequest = new RetrieveAllEntitiesRequest {

使用CRM 2013,如何通过
connectionManager
类获取CRM中所有实体的列表?我想获取当前连接的所有实体。

如果您希望使用代码(C#)获取实体元数据,那么我们有内置消息来获取所有实体以及所需的属性级别信息。您可以使用消息“RetrieveAllentiesRequest”。下面是一个示例代码,以实现相同的功能

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);

希望这就是你想要的。如果您需要更多信息,请联系我们。

感谢您的评论,并立即回复,
RetrieveAllEntitiesRequest retrieveAllEntityRequest = new RetrieveAllEntitiesRequest
{
    RetrieveAsIfPublished = true,
    EntityFilters = EntityFilters.Attributes
};
RetrieveAllEntitiesResponse retrieveAllEntityResponse = (RetrieveAllEntitiesResponse)serviceProxy.Execute(retrieveAllEntityRequest);
这是我的职责

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;
}

如果您只需要列出CRM上存在的实体,则可以安装SDK的托管解决方案。它应该作为zip文件位于SDK文件夹Tools\MetadataBrowser\中。此外,您还可以使用SampleCode\CS\Metadata\Entities(C#)中的DumpEntityInfo应用程序,创建包含系统中当前所有实体的xml文件。感谢您的回答,但当我调用函数GetEntities VS已停止工作时,这是我的函数:public static EntityMetadata[]GetEntities(IOOrganizationService服务){RetrieveAllentiesRequest=new RetrieveAllentiesRequest();RetrieveAllentiesResponse=new RetrieveAllentiesResponse();Request.EntityFilters=EntityFilters.All;Response=(RetrieveAllentiesResponse)service.Execute(请求);var entities=Response.EntityMetadata;return entities;}我以加载形式调用我的函数,比如var allenties=CRMHelpers.GetEntities(服务);foreach(allenties中的EntityMetadata实体){cbxEntity.Items.Add(Entity.LogicalName);}它停止工作了吗(比如抛出了一些异常?)或者需要一些时间。我注意到,与正常的数据获取相比,获取元数据通常需要更多的时间。为什么您要实例化一个新的响应对象,只是为了在几行之后扔掉它?--Dictionary对象是干什么的?--它看起来在任何地方都不会被使用。