Devlooped.TableStorage.Protobuf
5.2.1
Prefix Reserved
dotnet add package Devlooped.TableStorage.Protobuf --version 5.2.1
NuGet\Install-Package Devlooped.TableStorage.Protobuf -Version 5.2.1
<PackageReference Include="Devlooped.TableStorage.Protobuf" Version="5.2.1" />
paket add Devlooped.TableStorage.Protobuf --version 5.2.1
#r "nuget: Devlooped.TableStorage.Protobuf, 5.2.1"
// Install Devlooped.TableStorage.Protobuf as a Cake Addin #addin nuget:?package=Devlooped.TableStorage.Protobuf&version=5.2.1 // Install Devlooped.TableStorage.Protobuf as a Cake Tool #tool nuget:?package=Devlooped.TableStorage.Protobuf&version=5.2.1
This project uses SponsorLink and may issue IDE-only warnings if no active sponsorship is detected.
A Protocol Buffers binary serializer for use with document-based repositories.
Usage:
var repo = DocumentRepository.Create<Product>(..., serializer: ProtobufDocumentSerializer.Default);
Document Storage
The DocumentRepository.Create
and DocumentPartition.Create
factory methods provide access
to document-based storage, exposing the a similar API as column-based storage.
Document repositories cause entities to be persisted as a single document column, alongside type and version information to handle versioning a the app level as needed.
The API is mostly the same as for column-based repositories (document repositories implement
the same underlying ITableStorage
interface):
public record Product(string Category, string Id)
{
public string? Title { get; init; }
public double Price { get; init; }
public DateOnly CreatedAt { get; init; }
}
var book = new Product("book", "9781473217386")
{
Title = "Neuromancer",
Price = 7.32
};
// Column-based storage
var repo = TableRepository.Create<Product>(
CloudStorageAccount.DevelopmentStorageAccount,
tableName: "Products",
partitionKey: p => p.Category,
rowKey: p => p.Id);
await repo.PutAsync(book);
// Document-based storage
var docs = DocumentRepository.Create<Product>(
CloudStorageAccount.DevelopmentStorageAccount,
tableName: "Documents",
partitionKey: p => p.Category,
rowKey: p => p.Id
serializer: [SERIALIZER]);
await docs.PutAsync(book);
If not provided, the serializer defaults to the
System.Text.Json
-basedDocumentSerializer.Default
.
The resulting differences in storage can be seen in the following screenshots of the Azure Storage Explorer:
The Type
column persisted in the documents table is the Type.FullName
of the persisted entity, and the
Version
is the [Major].[Minor]
of its assembly, which could be used for advanced data migration scenarios.
The major and minor version components are also provided as individual columns for easier querying
by various version ranges, using IDocumentRepository.EnumerateAsync(predicate)
.
Sponsors
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Devlooped.TableStorage (>= 5.2.1)
- protobuf-net (>= 3.2.30)
-
net6.0
- Devlooped.TableStorage (>= 5.2.1)
- protobuf-net (>= 3.2.30)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
5.2.1 | 87 | 10/22/2024 |
5.2.0 | 79 | 7/24/2024 |
5.2.0-rc.1 | 55 | 7/13/2024 |
5.2.0-rc | 84 | 7/10/2024 |
5.2.0-beta | 91 | 7/6/2024 |
5.1.2 | 145 | 1/25/2024 |
5.1.1 | 179 | 10/4/2023 |
5.1.0 | 202 | 8/11/2023 |
5.0.2 | 185 | 8/8/2023 |
5.0.1 | 186 | 7/25/2023 |
5.0.0 | 177 | 7/25/2023 |
4.3.1 | 179 | 7/24/2023 |
4.3.0 | 182 | 6/27/2023 |
4.2.1 | 203 | 4/17/2023 |
4.2.0 | 253 | 3/28/2023 |
4.1.3 | 321 | 1/20/2023 |
4.1.2 | 312 | 1/16/2023 |
4.0.0 | 439 | 8/26/2022 |
4.0.0-rc.1 | 105 | 8/26/2022 |
4.0.0-rc | 194 | 8/15/2022 |
4.0.0-beta | 206 | 5/17/2022 |
4.0.0-alpha | 189 | 5/4/2022 |
3.2.0 | 585 | 12/13/2021 |
3.1.1 | 450 | 8/29/2021 |
3.1.0 | 417 | 8/13/2021 |
3.0.3 | 445 | 7/28/2021 |
3.0.2 | 465 | 7/1/2021 |
3.0.1 | 481 | 7/1/2021 |
3.0.0 | 452 | 7/1/2021 |
2.0.2 | 497 | 6/23/2021 |
2.0.1 | 470 | 6/17/2021 |
2.0.0 | 505 | 6/16/2021 |
1.3.0 | 411 | 5/31/2021 |