private async Task <List <Entity> > GetEntityById(string fieldName, Guid idEntity, ColumnSet columnSet)
        {
            {
                var repository = new SdkMessageFilterRepository(_service);

                var messageFilter = await repository.FindByEntityAndMessageAsync(_entityMetadata.LogicalName, SdkMessage.Instances.RetrieveMultiple, new ColumnSet(false));

                if (messageFilter == null)
                {
                    return(null);
                }
            }

            QueryExpression query = new QueryExpression()
            {
                NoLock = true,

                EntityName = _entityMetadata.LogicalName,

                ColumnSet = columnSet,

                Criteria =
                {
                    Conditions =
                    {
                        new ConditionExpression(fieldName, ConditionOperator.Equal, idEntity),
                    },
                },
            };

            return(await _service.RetrieveMultipleAllAsync <Entity>(query));
        }
        private async Task <Entity> GetEntityById(Guid idEntity, ColumnSet columnSet)
        {
            var repository = new SdkMessageFilterRepository(_service);

            var messageFilter = await repository.FindByEntityAndMessageAsync(_entityMetadata.LogicalName, SdkMessage.Instances.RetrieveMultiple, new ColumnSet(false));

            if (messageFilter != null)
            {
                var query = new QueryExpression()
                {
                    NoLock = true,

                    TopCount = 2,

                    EntityName = _entityMetadata.LogicalName,

                    ColumnSet = columnSet,

                    Criteria =
                    {
                        Conditions =
                        {
                            new ConditionExpression(_entityMetadata.PrimaryIdAttribute, ConditionOperator.Equal, idEntity),
                        },
                    },
                };

                try
                {
                    var coll = _service.RetrieveMultiple(query);

                    if (coll.Entities.Count == 1)
                    {
                        return(coll.Entities.First());
                    }
                }
                catch (Exception ex)
                {
                    DTEHelper.WriteExceptionToLog(ex);
                }
            }

            messageFilter = await repository.FindByEntityAndMessageAsync(_entityMetadata.LogicalName, SdkMessage.Instances.Retrieve, new ColumnSet(false));

            if (messageFilter != null)
            {
                try
                {
                    var result = _service.Retrieve(_entityMetadata.LogicalName, idEntity, columnSet);

                    return(result);
                }
                catch (Exception ex)
                {
                    DTEHelper.WriteExceptionToLog(ex);
                }
            }

            return(null);
        }
示例#3
0
        private async Task <Entity> GetEntityByNameField(string name, ColumnSet columnSet)
        {
            {
                var repository = new SdkMessageFilterRepository(_service);

                var messageFilter = await repository.FindByEntityAndMessageAsync(_entityMetadata.LogicalName, SdkMessage.Schema.Instances.RetrieveMultiple, ColumnSetInstances.None);

                if (messageFilter == null)
                {
                    return(null);
                }
            }

            var query = new QueryExpression()
            {
                NoLock = true,

                TopCount = 2,

                EntityName = _entityMetadata.LogicalName,

                ColumnSet = columnSet,

                Criteria =
                {
                    Conditions =
                    {
                        new ConditionExpression(_entityMetadata.PrimaryNameAttribute, ConditionOperator.Equal, name),
                    },
                },
            };

            try
            {
                var coll = _service.RetrieveMultiple(query);

                if (coll.Entities.Count == 1)
                {
                    return(coll.Entities.First());
                }
            }
            catch (Exception ex)
            {
                DTEHelper.WriteExceptionToLog(ex);
            }

            return(null);
        }