Пример #1
0
        public Entity Get(string entity, Hashtable keys, string[] columns = null)
        {
            if (!CrmVersionManager.IsSupported(CrmVersion.CRM2015_1_RTM))
            {
                throw new NotSupportedException();
            }

            ColumnSet columnSet = BuildColumnSet(columns);

            KeyAttributeCollection keysCollection = new KeyAttributeCollection();

            keysCollection.AddRange(keys.ToEnumerable <string, object>());
            EntityReference reference = new EntityReference(entity, keysCollection);

            OrganizationRequest request = new OrganizationRequest("Retrieve")
            {
                Parameters = new ParameterCollection()
            };

            request.Parameters.Add("Target", reference);
            request.Parameters.Add("ColumnSet", columnSet);

            OrganizationResponse response = CrmContext.OrganizationProxy.Execute(request);

            return((Entity)response.Results["Entity"]);
        }
Пример #2
0
        internal static T Unmock <T>(this object item)
        {
            if (item is MockOrgRequest request)
            {
                var collection = new ParameterCollection();
                collection.AddRange(request.Parameters?
                                    .Select(e => new KeyValuePair <string, object>(e.Key, e.Value?.Unmock <object>()))
                                    ?? new KeyValuePair <string, object> [0]);

                return((T)(object)
                       new OrganizationRequest
                {
                    RequestName = request.Name,
                    Parameters = collection
                });
            }

            if (item is MockOrgResponse response)
            {
                var collection = new ParameterCollection();
                collection.AddRange(response.Results?
                                    .Select(e => new KeyValuePair <string, object>(e.Key, e.Value?.Unmock <object>()))
                                    ?? new KeyValuePair <string, object> [0]);

                return((T)(object)
                       new OrganizationResponse
                {
                    ResponseName = response.Name,
                    Results = collection
                });
            }

            if (item is MockEntity entity)
            {
                var attributes = new AttributeCollection();
                attributes.AddRange(entity.Attributes?
                                    .Select(e => new KeyValuePair <string, object>(e.Key, e.Value?.Unmock <object>()))
                                    ?? new KeyValuePair <string, object> [0]);
                var keys = new KeyAttributeCollection();
                keys.AddRange(entity.Keys?
                              .Select(e => new KeyValuePair <string, object>(e.Key, e.Value?.Unmock <object>()))
                              ?? new KeyValuePair <string, object> [0]);

                return((T)(object)
                       new Entity(entity.LogicalName, entity.Id)
                {
                    Attributes = attributes,
                    KeyAttributes = keys
                });
            }

            if (item is MockEntityReference entityReference)
            {
                var keys = new KeyAttributeCollection();
                keys.AddRange(entityReference.Keys?
                              .Select(e => new KeyValuePair <string, object>(e.Key, e.Value?.Unmock <object>()))
                              ?? new KeyValuePair <string, object> [0]);

                return((T)(object)
                       new EntityReference(entityReference.LogicalName, entityReference.Id)
                {
                    KeyAttributes = keys
                });
            }

            if (item is MockEntityCollection entityCollection)
            {
                return((T)(object)new EntityCollection(entityCollection.Collection?.Select(e => e?.Unmock <Entity>()).ToList()));
            }

            if (item is MockEntityReferenceCollection entityReferenceCollection)
            {
                return((T)(object)new EntityReferenceCollection(entityReferenceCollection.Collection?
                                                                .Select(e => e?.Unmock <EntityReference>()).ToList()));
            }

            if (item is MockColumnSet columnSet)
            {
                return((T)(object)(columnSet.Columns == null
                                        ? new ColumnSet(columnSet.AllColumns)
                                        : new ColumnSet(columnSet.Columns)
                {
                    AllColumns = columnSet.AllColumns
                }));
            }

            return((T)item);
        }