Exemple #1
0
        private void WriteEntity(Stream stream, OeEntityItem entityItem)
        {
            var settings = new ODataMessageWriterSettings()
            {
                BaseUri  = _baseUri,
                Version  = ODataVersion.V4,
                ODataUri = new ODataUri()
                {
                    ServiceRoot = _baseUri
                },
                EnableMessageStreamDisposal = false
            };

            IODataResponseMessage responseMessage = new OeInMemoryMessage(stream, null);

            using (ODataMessageWriter messageWriter = new ODataMessageWriter(responseMessage, settings, _model))
            {
                ODataUtils.SetHeadersForPayload(messageWriter, ODataPayloadKind.Resource);
                ODataWriter writer = messageWriter.CreateODataResourceWriter(entityItem.EntitySet, entityItem.EntityType);

                entityItem.RefreshEntry();
                writer.WriteStart(entityItem.Entry);
                writer.WriteEnd();
            }
        }
        private void WriteEntity(Stream stream, OeEntityItem entityItem)
        {
            IODataResponseMessage responseMessage = new OeInMemoryMessage(stream, null);

            using (ODataMessageWriter messageWriter = new ODataMessageWriter(responseMessage, _settings, _model))
            {
                ODataUtils.SetHeadersForPayload(messageWriter, ODataPayloadKind.Resource);
                ODataWriter writer = messageWriter.CreateODataResourceWriter(entityItem.EntitySet, entityItem.EntityType);

                writer.WriteStart(entityItem.Entry);
                writer.WriteEnd();
            }
        }
        protected Object CreateEntity(ODataResource resource, IReadOnlyList <NavigationPorperty> navigationProperties)
        {
            Db.OeEntitySetMetaAdapter entitySetMetaAdapter = EntitySetMetaAdapters.FindByTypeName(resource.TypeName);
            Object entity = OeEntityItem.CreateEntity(entitySetMetaAdapter.EntityType, resource);
            Dictionary <PropertyInfo, ODataResourceSetBase> propertyInfos = null;

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

                if (navigationProperty.ResourceSet == null || (navigationProperty.ResourceSet.Count == null && navigationProperty.ResourceSet.NextPageLink == 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);
        }
        private Object CreateEntity(StackItem stackItem)
        {
            var entry = (ODataResource)stackItem.Item;

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

            var entitySetMetaAdapter = _entitySetMetaAdapters.FindByTypeName(entry.TypeName);
            var entity = OeEntityItem.CreateEntity(entitySetMetaAdapter.EntityType, entry);

            if (stackItem.NavigationProperties.Count > 0)
            {
                PropertyDescriptorCollection clrProperties = TypeDescriptor.GetProperties(entitySetMetaAdapter.EntityType);
                foreach (var navigationProperty in stackItem.NavigationProperties)
                {
                    PropertyDescriptor clrProperty = clrProperties[navigationProperty.Key];
                    clrProperty.SetValue(entity, navigationProperty.Value);
                }
            }

            return(entity);
        }
 protected virtual void OnBeforeInvokeController(OeDataContext dataContext, OeEntityItem entityItem)
 {
 }
 protected override void OnBeforeInvokeController(OeDataContext dataContext, OeEntityItem entityItem)
 {
 }