Пример #1
0
        public async Task <PluginType> GetPluginTypeByIdAsync(Guid id)
        {
            QueryExpression query = new QueryExpression()
            {
                NoLock = true,

                TopCount = 2,

                EntityName = PluginType.EntityLogicalName,

                ColumnSet = new ColumnSet(true),

                Criteria =
                {
                    Conditions =
                    {
                        new ConditionExpression(PluginType.EntityPrimaryIdAttribute, ConditionOperator.Equal, id),
                    },
                },

                LinkEntities =
                {
                    new LinkEntity()
                    {
                        JoinOperator = JoinOperator.LeftOuter,

                        LinkFromEntityName    = PluginType.EntityLogicalName,
                        LinkFromAttributeName = PluginType.Schema.Attributes.pluginassemblyid,

                        LinkToEntityName    = PluginAssembly.EntityLogicalName,
                        LinkToAttributeName = PluginAssembly.EntityPrimaryIdAttribute,

                        Columns = new ColumnSet(await PluginAssemblyRepository.GetAttributesAsync(_service)),

                        EntityAlias = PluginType.Schema.Attributes.pluginassemblyid,
                    },
                },
            };

            var coll = _service.RetrieveMultiple(query).Entities;

            return(coll.Count == 1 ? coll.Select(e => e.ToEntity <PluginType>()).SingleOrDefault() : null);
        }
        private async Task <SdkMessageProcessingStep> GetLinked1(Guid id)
        {
            QueryExpression query = new QueryExpression()
            {
                NoLock = true,

                TopCount = 2,

                EntityName = SdkMessageProcessingStep.EntityLogicalName,

                ColumnSet = new ColumnSet(true),

                Criteria =
                {
                    Conditions =
                    {
                        new ConditionExpression(SdkMessageProcessingStep.EntityPrimaryIdAttribute, ConditionOperator.Equal, id),
                    },
                },

                LinkEntities =
                {
                    new LinkEntity()
                    {
                        LinkFromEntityName    = SdkMessageProcessingStep.EntityLogicalName,
                        LinkFromAttributeName = SdkMessageProcessingStep.Schema.Attributes.sdkmessageid,

                        LinkToEntityName    = SdkMessage.EntityLogicalName,
                        LinkToAttributeName = SdkMessage.EntityPrimaryIdAttribute,

                        EntityAlias = SdkMessageProcessingStep.Schema.Attributes.sdkmessageid,

                        JoinOperator = Microsoft.Xrm.Sdk.Query.JoinOperator.LeftOuter,

                        Columns = new ColumnSet(true),
                    },

                    new LinkEntity()
                    {
                        LinkFromEntityName    = SdkMessageProcessingStep.EntityLogicalName,
                        LinkFromAttributeName = SdkMessageProcessingStep.Schema.Attributes.sdkmessagefilterid,

                        LinkToEntityName    = SdkMessageFilter.EntityLogicalName,
                        LinkToAttributeName = SdkMessageFilter.EntityPrimaryIdAttribute,

                        EntityAlias = SdkMessageProcessingStep.Schema.Attributes.sdkmessagefilterid,

                        JoinOperator = Microsoft.Xrm.Sdk.Query.JoinOperator.LeftOuter,

                        Columns = new ColumnSet(true),

                        LinkEntities =
                        {
                            new LinkEntity()
                            {
                                LinkFromEntityName    = SdkMessageFilter.EntityLogicalName,
                                LinkFromAttributeName = SdkMessageFilter.Schema.Attributes.sdkmessageid,

                                LinkToEntityName    = SdkMessage.EntityLogicalName,
                                LinkToAttributeName = SdkMessage.EntityPrimaryIdAttribute,

                                EntityAlias = SdkMessageProcessingStep.Schema.Attributes.sdkmessagefilterid + "." + SdkMessageFilter.Schema.Attributes.sdkmessageid,

                                JoinOperator = Microsoft.Xrm.Sdk.Query.JoinOperator.LeftOuter,

                                Columns = new ColumnSet(true),
                            },
                        },
                    },

                    new LinkEntity()
                    {
                        LinkFromEntityName    = SdkMessageProcessingStep.EntityLogicalName,
                        LinkFromAttributeName = SdkMessageProcessingStep.Schema.Attributes.eventhandler,

                        LinkToEntityName    = PluginType.EntityLogicalName,
                        LinkToAttributeName = PluginType.EntityPrimaryIdAttribute,

                        EntityAlias = SdkMessageProcessingStep.Schema.Attributes.eventhandler
                                      + "." + PluginType.EntityLogicalName
                        ,

                        JoinOperator = Microsoft.Xrm.Sdk.Query.JoinOperator.LeftOuter,

                        Columns = new ColumnSet(true),

                        LinkEntities =
                        {
                            new LinkEntity()
                            {
                                LinkFromEntityName    = PluginType.EntityLogicalName,
                                LinkFromAttributeName = PluginType.Schema.Attributes.pluginassemblyid,

                                LinkToEntityName    = PluginAssembly.EntityLogicalName,
                                LinkToAttributeName = PluginAssembly.EntityPrimaryIdAttribute,

                                EntityAlias = SdkMessageProcessingStep.Schema.Attributes.eventhandler
                                              + "." + PluginType.EntityLogicalName
                                              + "." + PluginType.Schema.Attributes.pluginassemblyid
                                ,

                                JoinOperator = Microsoft.Xrm.Sdk.Query.JoinOperator.LeftOuter,

                                Columns = new ColumnSet(await PluginAssemblyRepository.GetAttributesAsync(_service)),
                            },
                        },
                    },
                },
            };

            var coll = _service.RetrieveMultiple(query).Entities;

            return(coll.Count == 1 ? coll.Select(e => e.ToEntity <SdkMessageProcessingStep>()).SingleOrDefault() : null);
        }