如何获得CRM 2011的所有实体领域?

我试图获取所有实体的字段模式名称,而不查询现有记录。 我什么都不知道。

另外,如何使用QueryExpression获取它,导致它检索包含一些信息的所有字段?

Andrii,我正在尝试做这样的事情

var query = new QueryExpression {EntityName = "", ColumnSet = new ColumnSet(true)}; var retrieve = service.RetrieveMultiple(query); 

如果您有CRM SDK( http://www.microsoft.com/en-us/download/details.aspx?id=24004 ),您将在SDK \ Bin文件夹中找到名为“Crmsvcutil.exe”的实用程序。 此可执行文件将生成表示每个CRM实体及其字段的类。 然后,您可以使用type.GetFields()方法在代码中派生这些类的字段。 使用crmsvcutil创建这些类后,可以使用LINQ查询根据满足您需求的任何条件查询CRM数据,包括非空字段。 尝试使用QueryExpression时遇到的问题是您必须手动定义字段,如下所示:

 QueryExpression query = new QueryExpression("contact"); query.ColumnSet.AddColumns("firstname", "lastname"); query.Criteria.AddFilter(filter1); 

我正在寻找类似的东西,最终烹饪出一种有用的方法:

 ///  /// Retrieves an entity's attributes. ///  /// entity's name /// return display names of such language code /// xrmservicecontext object /// Dictionary public static Dictionary GetAttributes(string entityName, int languageId, XrmServiceContext xrm) { Dictionary attributesData = new Dictionary(); RetrieveEntityRequest metaDataRequest = new RetrieveEntityRequest(); RetrieveEntityResponse metaDataResponse = new RetrieveEntityResponse(); metaDataRequest.EntityFilters = EntityFilters.Attributes; metaDataRequest.LogicalName = entityName; metaDataResponse = (RetrieveEntityResponse)xrm.Execute(metaDataRequest); foreach (AttributeMetadata a in metaDataResponse.EntityMetadata.Attributes) { //if more than one label for said attribute, get the one matching the languade code we want... if (a.DisplayName.LocalizedLabels.Count() > 1) attributesData.Add(a.LogicalName, a.DisplayName.LocalizedLabels.Where(x=>x.LanguageCode == languageId).SingleOrDefault().Label); //else, get the only one available regardless of languade code... if (a.DisplayName.LocalizedLabels.Count() == 1) attributesData.Add(a.LogicalName, a.DisplayName.LocalizedLabels[0].Label); } return attributesData; } 

您当然可以修改它以返回您需要的有关实体属性的任何信息,但在我的情况下,我正在寻找一种方法来替换CRM SDK用于使用实际显示名称自动生成gridview列的属性的逻辑名称属性。

您应该尝试使用RetrieveEntity消息来获取所有实体字段。 如果它等于null,你将无法获取字段。 你将不得不分析 – 如果内部集合中的属性 – 它包含值,否则它等于null。