SujaySarma.Data.Azure.Tables 7.4.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package SujaySarma.Data.Azure.Tables --version 7.4.0                
NuGet\Install-Package SujaySarma.Data.Azure.Tables -Version 7.4.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SujaySarma.Data.Azure.Tables" Version="7.4.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SujaySarma.Data.Azure.Tables --version 7.4.0                
#r "nuget: SujaySarma.Data.Azure.Tables, 7.4.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SujaySarma.Data.Azure.Tables as a Cake Addin
#addin nuget:?package=SujaySarma.Data.Azure.Tables&version=7.4.0

// Install SujaySarma.Data.Azure.Tables as a Cake Tool
#tool nuget:?package=SujaySarma.Data.Azure.Tables&version=7.4.0                

SujaySarma.Data.Azure.Tables

version 7.0.0

Changes and reasons why:

  • Until version 6.4.0, we depended on the Microsoft.Azure.Cosmos.Table library. This library has been deprecated by Microsoft and no new development will be done on it. Microsoft has built a new library Azure.Data.Tables and they recommend developers move to this new library.

  • While the old library was feature-rich, that we could leverage in this library, we provided a lot of really useful features. However, the new library lacks many APIs. For example, the new API does not provide a way to check if a Table exists. Due to such breaking changes, we have (one of):

    1. Tried to create a workaround using other well-known public APIs

    2. Created our own API using REST API (ultimately all Azure Storage and Cosmos calls end up as REST API calls)

    3. Removed support for the call or property -- with a heavy heart! 😦


Our own API surface layer

  1. In version 6.x, we introduced the AzureTablesContext class, we have continued development of this and exposed many more simplified APIs in this class. For example, instead of having to populate the Query object, you can now use the exposed multi-parameter functions. We have also added wrapper methods for Insert/Update/Delete operations. Don't worry, under the hood we simply reparameterize and call the old methods to ensure predictable results.

  2. When using the TableContext method, multiple object types will now support easy extensions. For example, if you have an IEnumerable<T>, you can now do list.Insert(tblContext) --- this is equivalent to tblContext.Insert(list).


Optimizations

We have a raft of performance optimizations under the hood:

  • Simplified our Reflection layer, removing call paths, properties etc that we never used.
  • Optimized between flags and object references based on how we were using them.
  • (de)Serialization functions optimized to only pull or push information that was required. For example, when directly deleting a record from Azure, we no longer populate the full .NET object.
  • Bug-prone calls have been dropped. For example, the Join system introduced a long time ago had severe performance problems (mainly because Azure Storage Tables and Cosmos DB do not support inter-entity relationships like SQL) -- so this are gone now.

Hope you enjoy using this library. I do!

Product Compatible and additional computed target framework versions.
.NET 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
9.1.0 98 6/26/2024
8.5.0 149 12/19/2023
8.0.0 461 1/9/2023
7.4.0 411 9/16/2022
7.3.0 409 9/8/2022
7.2.0 412 9/8/2022
7.0.0 400 8/28/2022
6.4.0 463 8/4/2022
6.3.5 573 3/24/2022
6.3.0 369 9/9/2021
6.2.2 326 8/20/2021
6.2.0 356 8/18/2021
6.0.0 441 8/13/2021
5.1.5 439 6/30/2021
5.1.0 378 5/6/2021
5.0.0 366 5/2/2021

Version 7.4.0 - Bug fixes and Enhancements:
Issue#6 - Entities with Enum types cannot be saved.
Enhancement#5 - Code reorganization and optimization