gabrielweyer-pre-release - TableStorage.UnsupportedTypes 1.0.5-snupkg0001

Allows to store unsupported data types in Azure Table storage.

PM> Install-Package TableStorage.UnsupportedTypes -Version 1.0.5-snupkg0001 -Source

Copy to clipboard

> nuget.exe install TableStorage.UnsupportedTypes -Version 1.0.5-snupkg0001 -Source

Copy to clipboard

> dotnet add package TableStorage.UnsupportedTypes --version 1.0.5-snupkg0001 --source

Copy to clipboard
<PackageReference Include="TableStorage.UnsupportedTypes" Version="1.0.5-snupkg0001" />
Copy to clipboard

nuget TableStorage.UnsupportedTypes  ~> 1.0.5-snupkg0001
Copy to clipboard

> choco install TableStorage.UnsupportedTypes --version 1.0.5-snupkg0001 --source

Copy to clipboard
Import-Module PowerShellGet
Register-PSRepository -Name "gabrielweyer-pre-release" -SourceLocation ""
Install-Module -Name "TableStorage.UnsupportedTypes" -RequiredVersion "1.0.5-snupkg0001" -Repository "gabrielweyer-pre-release" -AllowPreRelease
Copy to clipboard

Browse the sources in this package using Visual Studio or WinDbg by configuring the following symbol server URL:

Azure Table storage Unsupported Types

Package Release Pre-release
TableStorage.UnsupportedTypes NuGet MyGet
CI Status Platform(s) Framework(s) Test Framework(s)
AppVeyor Build Status Windows nestandard2.0 netcoreapp3.1

Azure Table storage supports a limited set of data types (namely byte[], bool, DateTime, double, Guid, int, long and string). Unsupported Types allows to store unsupported data types with some limitations:

  • Your Type should be serializable / deserializable to and from JSON using Json.NET
  • The entity should fit in 1 MB

This is distributed via a NuGet package but the implementation is so simple that you can just copy the classes into your own solution if that works better for you.

:rotating_light: I'm using the legacy WindowsAzure.Storage NuGet package, let me know if there is interest in using Microsoft.Azure.Cosmos.Table instead.

How it works

  1. Your TableEntity should inherit from UnsupportedTypesTableEntity
  2. Decorate the properties you want to store with the UnsupportedTypeAttribute
  3. That's all
public class Unimportant
    public string FirstName { get; set; }
    public string LastName { get; set; }

public class UnsupportedTypesTestTableEntity : UnsupportedTypesTableEntity
    public Unimportant VeryImportant { get; set; }

There is a console application in src/SampleConsole demonstrating Unsupported Types:

Output of the console


Entity stored in storage



You will not be able to filter the entities using the unsupported types. You'll need to materialize them first and then use LINQ to Objects.

Potential improvements

Cache properties

Each read and write to Azure Table storage will trigger the use of Reflection. This could be improved by caching the unsupported properties, in this case the scan would happen once per application lifetime.

Running locally


Initial setup on Windows


Initial setup on Linux / OS X


Run build script

dotnet cake build.cake
  • .NETStandard 2.0
    • WindowsAzure.Storage (>= 9.3.3)
  • .NETStandard 2.0:


Gabriel Weyer


Gabriel Weyer

Project URL




Azure Table storage


0 total downloads
0 downloads for version 1.0.5-snupkg0001
Download (4.83 KB)
Download symbols (2.95 KB)
Found on the current feed only

Package history

Version Size Last updated Downloads Mirrored?
1.0.5-snupkg0001 4.83 KB Sun, 31 May 2020 01:27:41 GMT 0
1.0.4-cake-local-tool0005 4.86 KB Sun, 31 May 2020 00:52:28 GMT 0
1.0.4-cake-local-tool0004 4.86 KB Sun, 31 May 2020 00:48:31 GMT 0
1.0.4-cake-local-tool0003 4.86 KB Sun, 31 May 2020 00:32:35 GMT 0
1.0.3-dotnet-3-1-0001 4.85 KB Sun, 29 Dec 2019 06:56:45 GMT 0
1.0.1-nuget-key0006 4.83 KB Sat, 23 Feb 2019 00:49:07 GMT 0
0.1.4-dotnet-22-0003 4.85 KB Thu, 03 Jan 2019 22:40:28 GMT 0
0.1.2-netcore2-1-0001 4.84 KB Tue, 05 Jun 2018 12:43:05 GMT 0
0.1.0-initial-version0002 4.8 KB Wed, 07 Feb 2018 20:54:35 GMT 0