public virtual IEnumerable Read(Stream response)
        {
            String entitySetName = GetEntitSetName(response);

            response.Position = 0;
            Db.OeEntitySetAdapter entitySetMetaAdatpter = EntitySetAdapters.FindByEntitySetName(entitySetName);
            return(ReadImpl(response, entitySetMetaAdatpter));
        }
示例#2
0
        protected Object CreateEntity(ODataResource resource, IReadOnlyList <NavigationProperty> navigationProperties)
        {
            Db.OeEntitySetAdapter entitySetAdapter = EntitySetAdapters.FindByTypeName(resource.TypeName);
            Object entity = OeEdmClrHelper.CreateEntity(entitySetAdapter.EntityType, resource);
            Dictionary <PropertyInfo, ODataResourceSetBase> propertyInfos = null;

            foreach (NavigationProperty navigationProperty in navigationProperties)
            {
                PropertyInfo clrProperty = entitySetAdapter.EntityType.GetProperty(navigationProperty.Name);
                Object       value       = navigationProperty.Value;

                if (navigationProperty.ResourceSet == null || (navigationProperty.ResourceSet.Count == null && navigationProperty.ResourceSet.NextPageLink == null))
                {
                    if (clrProperty.GetSetMethod() != null)
                    {
                        clrProperty.SetValue(entity, value);
                    }
                    continue;
                }

                if (value == null && navigationProperty.ResourceSet.NextPageLink != null)
                {
                    value = CreateCollection(clrProperty.PropertyType);
                }

                clrProperty.SetValue(entity, value);
                if (value is IEnumerable collection)
                {
                    NavigationProperties.Add(collection, navigationProperty.ResourceSet);

                    if (propertyInfos == null)
                    {
                        propertyInfos = new Dictionary <PropertyInfo, ODataResourceSetBase>(navigationProperties.Count);
                        NavigationPropertyEntities.Add(entity, propertyInfos);
                    }
                    propertyInfos.Add(clrProperty, navigationProperty.ResourceSet);
                }
            }

            return(entity);
        }
 public IEnumerable <T> Read <T>(Stream response)
 {
     Db.OeEntitySetAdapter entitySetMetaAdatpter = EntitySetAdapters.FindByClrType(typeof(T));
     return(ReadImpl(response, entitySetMetaAdatpter).Cast <T>());
 }