private async Task SerializeAsync(ODataWriter writer) { var resourceSet = new ODataResourceSet() { Count = Count }; writer.WriteStart(resourceSet); int count = 0; T entity = default; EntityPropertiesInfo entityPropertiesInfo = default; while (await _entities.MoveNext()) { entity = _entities.Current; _stack.Add(entity); WriteEntry(writer, entity, ref entityPropertiesInfo); _stack.Remove(entity); count++; } if (PageSize > 0 && count > 0 && (Count ?? Int32.MaxValue) > count) { resourceSet.NextPageLink = BuildNextPageLink(OeSkipTokenParser.GetSkipToken(_edmModel, GetKeys(entity))); } writer.WriteEnd(); }
private void WriteEntry(ODataWriter writer, Object entity, ref EntityPropertiesInfo entityPropertiesInfo) { if (entityPropertiesInfo.EdmEntityType == null) { entityPropertiesInfo = GetProperties(entity); } ODataResource entry = OeDataContext.CreateEntry(entity, entityPropertiesInfo.Structurals); writer.WriteStart(entry); foreach (PropertyInfo navigationProperty in entityPropertiesInfo.Navigations) { WriteNavigationProperty(writer, entity, navigationProperty); } writer.WriteEnd(); }
public RowInfo(EntityKeyInfo <TObject> partitionKey, EntityKeyInfo <TObject> rowKey, EntityPropertiesInfo <TObject> properties) { PartitionKey = partitionKey; RowKey = rowKey; Properties = properties; }