Dynamics CRM 365 查询实体之间的关系---C#篇
public class CrmHelper { /// <summary> /// 获取实体窗体 /// </summary> /// <param name="service"></param> /// <param name="objecttypecode"></param> /// <returns></returns> public static EntityCollection GetEntityForm(IOrganizationService service, int objecttypecode) { QueryExpression query = new QueryExpression("systemform"); query.Criteria.AddCondition("objecttypecode", ConditionOperator.Equal, objecttypecode); return service.RetrieveMultiple(query); } /// <summary> /// 获取实体视图 /// </summary> /// <param name="service"></param> /// <param name="objecttypecode">实体编码</param> /// <returns></returns> public static EntityCollection GetEntityView(IOrganizationService service, int objecttypecode) { //查询实体对应的视图 QueryExpression mySavedQuery = new QueryExpression { ColumnSet = new ColumnSet("savedqueryid", "name", "querytype", "isdefault", "returnedtypecode", "isquickfindquery", "fetchxml"), EntityName = "savedquery", Criteria = new FilterExpression { Conditions = { //new ConditionExpression //{ // AttributeName = "querytype", // Operator = ConditionOperator.Equal, // Values = {0} //}, new ConditionExpression { AttributeName = "returnedtypecode", Operator = ConditionOperator.Equal, Values = { objecttypecode } } } } }; RetrieveMultipleRequest retrieveSavedQueriesRequest = new RetrieveMultipleRequest { Query = mySavedQuery }; RetrieveMultipleResponse retrieveSavedQueriesResponse = (RetrieveMultipleResponse)service.Execute(retrieveSavedQueriesRequest); return retrieveSavedQueriesResponse.EntityCollection; } /// <summary> /// 获取实体关系 /// </summary> /// <param name="service"></param> /// <param name="entityname"></param> /// <returns></returns> public static List<OneToManyRelationshipMetadata> GetEntityRelationship(IOrganizationService service,string entityname) { List<OneToManyRelationshipMetadata> models = new List<OneToManyRelationshipMetadata>(); MetadataFilterExpression EntityFilter = new MetadataFilterExpression(LogicalOperator.And); EntityFilter.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, entityname)); MetadataPropertiesExpression EntityProperties = new MetadataPropertiesExpression() { AllProperties = false }; EntityProperties.PropertyNames.AddRange(new string[] { "ManyToOneRelationships" }); //N:1 MetadataFilterExpression AttributeFilter = new MetadataFilterExpression(LogicalOperator.Or); AttributeFilter.Conditions.AddRange(new MetadataConditionExpression[] { }); RetrieveMetadataChangesRequest request = new RetrieveMetadataChangesRequest() { Query = new EntityQueryExpression() { Criteria = EntityFilter, Properties = EntityProperties, RelationshipQuery = new RelationshipQueryExpression() { Criteria = AttributeFilter, Properties = new MetadataPropertiesExpression() { AllProperties = true } }, LabelQuery = new LabelQueryExpression() } }; RetrieveMetadataChangesResponse resp = (RetrieveMetadataChangesResponse)service.Execute(request); foreach (OneToManyRelationshipMetadata item in resp.EntityMetadata[0].ManyToOneRelationships) //N:1 { models.Add(item); //if (item.IsCustomRelationship.HasValue&&item.IsCustomRelationship.Value) //{ // models.Add(item); //} } return models; } public static void CreateEntity(IOrganizationService svc, EntityMetadata copyEn) { CreateEntityRequest createrequest = new CreateEntityRequest { //Define the entity--实体的定义 Entity= copyEn, //Entity = new EntityMetadata //{ // SchemaName = copyEn.LogicalName, // DisplayName = copyEn.DisplayName, // DisplayCollectionName = copyEn.DisplayCollectionName, // Description = copyEn.Description, // OwnershipType = copyEn.OwnershipType, // IsActivity = copyEn.IsActivity//, // MetadataId=copyEn.MetadataId //}, // Define the primary attribute for the entity--定义实体的主字段 PrimaryAttribute = new StringAttributeMetadata { SchemaName = copyEn.PrimaryNameAttribute, RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None), MaxLength = 100, FormatName = StringFormatName.Text, DisplayName = new Label("Bank Name", 1033), Description = new Label("The primary attribute for the Bank entity.", 1033) }, SolutionUniqueName = "CodeCreate20220801" }; svc.Execute(createrequest); Console.WriteLine($"The bank {copyEn.LogicalName} entity has been created."); } /// <summary> /// 获取所有实体信息 /// </summary> /// <returns></returns> public static List<EntityMetadata> GetAllEntity(IOrganizationService service,bool isall=false) { List<EntityMetadata> crmEntities = new List<EntityMetadata>(); RetrieveAllEntitiesRequest retrieveAll = new RetrieveAllEntitiesRequest { EntityFilters = EntityFilters.Entity, // EntityFilters = Microsoft.Xrm.Sdk.Metadata.EntityFilters.Attributes, //查询字段 RetrieveAsIfPublished = true }; var response = (RetrieveAllEntitiesResponse)service.Execute(retrieveAll); //crmEntities = response.EntityMetadata // .Where(x => x.DisplayName.UserLocalizedLabel != null && x.MetadataId != null && x.ObjectTypeCode.HasValue && x.IsCustomizable.Value // && x.CollectionSchemaName.Contains("new_")) // .ToList(); if (isall) { crmEntities = response.EntityMetadata.ToList(); } else { crmEntities = response.EntityMetadata .Where(x => x.DisplayName.UserLocalizedLabel != null && x.MetadataId != null && x.ObjectTypeCode.HasValue && x.IsCustomizable.Value&&x.LogicalName.Contains("new_") ) .ToList(); } return crmEntities; } /// <summary> /// 获取实体数据 /// </summary> /// <param name="service"></param> /// <param name="entityName"></param> /// <returns></returns> public static RetrieveEntityResponse GetEntityResponse(IOrganizationService service, string entityName) { RetrieveEntityRequest request = new RetrieveEntityRequest(); request.EntityFilters = Microsoft.Xrm.Sdk.Metadata.EntityFilters.Attributes; //查询字段 request.LogicalName = entityName; return (RetrieveEntityResponse)service.Execute(request); } /// <summary> /// 获取解决方案,没有就新增 /// </summary> /// <param name="svc"></param> /// <param name="solutionName">解决方案唯一名称</param> /// <returns></returns> public static Entity GetSolution(IOrganizationService svc, string solutionName) { QueryExpression querySolution = new QueryExpression("solution"); querySolution.Criteria.AddCondition("uniquename", ConditionOperator.Equal, solutionName); querySolution.ColumnSet = new ColumnSet(true); var ec = svc.RetrieveMultiple(querySolution); if (ec.Entities.Count > 0) { return ec.Entities[0]; } else { return null; } } }
记得收藏并关注,掌握更多相关知识!!!
分类:
Dynamics 365
, C#
标签:
Dynamic 365
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)