gabrielweyer-pre-release - TableStorage.UnsupportedTypes 1.0.3-dotnet-3-1-0001

Allows to store unsupported data types in Azure Table storage.

PM> Install-Package TableStorage.UnsupportedTypes -Version 1.0.3-dotnet-3-1-0001 -Source https://www.myget.org/F/gabrielweyer-pre-release/api/v3/index.json

Copy to clipboard

> nuget.exe install TableStorage.UnsupportedTypes -Version 1.0.3-dotnet-3-1-0001 -Source https://www.myget.org/F/gabrielweyer-pre-release/api/v3/index.json

Copy to clipboard

> dotnet add package TableStorage.UnsupportedTypes --version 1.0.3-dotnet-3-1-0001 --source https://www.myget.org/F/gabrielweyer-pre-release/api/v3/index.json

Copy to clipboard
<PackageReference Include="TableStorage.UnsupportedTypes" Version="1.0.3-dotnet-3-1-0001" />
Copy to clipboard
source https://www.myget.org/F/gabrielweyer-pre-release/api/v3/index.json

nuget TableStorage.UnsupportedTypes  ~> 1.0.3-dotnet-3-1-0001
Copy to clipboard

> choco install TableStorage.UnsupportedTypes --version 1.0.3-dotnet-3-1-0001 --source https://www.myget.org/F/gabrielweyer-pre-release/api/v2

Copy to clipboard
Import-Module PowerShellGet
Register-PSRepository -Name "gabrielweyer-pre-release" -SourceLocation "https://www.myget.org/F/gabrielweyer-pre-release/api/v2"
Install-Module -Name "TableStorage.UnsupportedTypes" -RequiredVersion "1.0.3-dotnet-3-1-0001" -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: https://www.myget.org/F/gabrielweyer-pre-release/symbols/


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.

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
{
    [UnsupportedType]
    public Unimportant VeryImportant { get; set; }
}

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

Output of the console

Console

Entity stored in storage

Storage

Limitations

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

Pre-requisites

Initial setup on Windows

.\bootstrap.ps1

Initial setup on Linux / OS X

./bootstrap.sh

Run build script

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

                        
Assembly Assembly hash Match
/lib/netstandard2.0/tablestorage.unsupportedtypes.dll c4b0159769ae4bcabdaf4272b382940dFFFFFFFF

Owners

Gabriel Weyer

Authors

Gabriel Weyer

Project URL

https://github.com/gabrielweyer/unsupported-types

License

Unknown

Tags

Azure Table storage

Info

0 total downloads
0 downloads for version 1.0.3-dotnet-3-1-0001
Download (4.85 KB)
Download symbols (5.91 KB)
Found on the current feed only

Package history

Version Size Last updated Downloads Mirrored?
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