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) { }