A repository wrapper for Azure Table Storage that uses POCOs (Plain Old CLR Objects) instead of objects that implemeent ITableEntity.
The Azure Storage SDK requires that objects that it works with to implement the ITableEntity interface. This puts us into one of two places that are often not desirable:
You implement the ITableEntity interace, or inherit from TableEntity. This is easy, but now you've got a leaky abstraction, as well as properties that won't make much sense in your domain (e.g. instead of a UserId, you've now got a RowKey, of the wrong type), or you have fields that are out of place, like ETag and Timestamp.
You create DTOs to save to ship data back and forth from the domain to Table Storage. This is a common style, but often is overkill, especially if we're just looking for a simple abstraction on top of Azure Table Storage.
This simple library seeks to take care of the mapping for us, so that you can continue to write your domain objects as POCOs, while still being able to leverage the Azure Storage SDK.
The library will convert simple properties to fields in Azure Table Storage. Complex types will serialize as json.
Install-Package TableStorage.Abstractions.POCO -Version 2.7.1
dotnet add package TableStorage.Abstractions.POCO --version 2.7.1
<PackageReference Include="TableStorage.Abstractions.POCO" Version="2.7.1" />
paket add TableStorage.Abstractions.POCO --version 2.7.1
#r "nuget: TableStorage.Abstractions.POCO, 2.7.1"
// Install TableStorage.Abstractions.POCO as a Cake Addin #addin nuget:?package=TableStorage.Abstractions.POCO&version=2.7.1 // Install TableStorage.Abstractions.POCO as a Cake Tool #tool nuget:?package=TableStorage.Abstractions.POCO&version=2.7.1
NuGet packages (1)
Showing the top 1 NuGet packages that depend on TableStorage.Abstractions.POCO:
Geared more toward Azure Table Storage (vs CosmosDB, which has an ATS api), using an intra/inter partition (or table) secondary index pattern. This library handles keeping the indexes up to date as data gets mutated.
This package is not used by any popular GitHub repositories.