Semantica.Lib.Storage 8.1.0-beta

This is a prerelease version of Semantica.Lib.Storage.
dotnet add package Semantica.Lib.Storage --version 8.1.0-beta
                    
NuGet\Install-Package Semantica.Lib.Storage -Version 8.1.0-beta
                    
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="Semantica.Lib.Storage" Version="8.1.0-beta" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Semantica.Lib.Storage" Version="8.1.0-beta" />
                    
Directory.Packages.props
<PackageReference Include="Semantica.Lib.Storage" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Semantica.Lib.Storage --version 8.1.0-beta
                    
#r "nuget: Semantica.Lib.Storage, 8.1.0-beta"
                    
#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.
#:package Semantica.Lib.Storage@8.1.0-beta
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Semantica.Lib.Storage&version=8.1.0-beta&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Semantica.Lib.Storage&version=8.1.0-beta&prerelease
                    
Install as a Cake Tool

Semantica.Lib.Storage

This package is part of the design packages of Semantica.Lib.

Summary

Provides interfaces and types for usage with your storables, as well as abstractions used to build on the patterns included in Semantica.Lib.Domain and base classes from Semantica.Lib.Domain.Data. This package is independent of those packages, so can be included in a storage layer that can be completely independent of your domain layer. The abstractions are also independent of a specific ORM-framework, but were designed with EntityFramework in mind.

Implementations for the abstractions provided in this package are provided in the Semantica.Lib.Storage.Data and Semantica.Lib.Storage.EntityFramework packages.

Dependencies

  • Semantica.Lib.Checks
  • Semantica.Lib.Core
  • Semantica.Lib.Extensions
  • Semantica.Lib.Linq
  • Semantica.Lib.Ordering
  • Semantica.Lib.Patterns

Documentation generated from the XMLDoc:

<a name='assembly'></a>

Lib.Storage

Contents

<a name='T-Semantica-Storage-CharEnums-CharEnumConverter'></a>

CharEnumConverter type

Namespace

Semantica.Storage.CharEnums

Summary

Provides static methods that help with converting strings or chars into enums that are of type ushort and vice versa.

These "CharEnums" can be defined using char literals, can be mapped onto char(1) database columns, and allow for more readable and less error prone storing of enums in a database, without sacrificing performance (which can be particularly important for keys or indices).

enum MyCharEnum : ushort
{
   Apples = 'A',
   Oranges = 'O',
   Pears = 'P'
}

<a name='T-Semantica-Storage-DataStores-IAggregateDataStore`2'></a>

IAggregateDataStore`2 type

Namespace

Semantica.Storage.DataStores

Summary

Defines methods for retreiving TStorables using an aggregating (typically foreign) key.

Only use this interface when TAggregateKey is a simple key (), otherwise use ICompositeAggregateDataStore`2.

A standard implementation using entity framework is provided in the Lib.Storage.EntityFramework package.

Generic Types
Name Description
TStorable Type of the storable
TAggregateKey Type of the key that aggregates TStorable

<a name='T-Semantica-Storage-DataStores-ICompositeAggregateDataStore`2'></a>

ICompositeAggregateDataStore`2 type

Namespace

Semantica.Storage.DataStores

Summary

Defines methods for retreiving TStorables using an aggregating (typically foreign) key.

If TAggregateKey is a simple key (), you can use IAggregateDataStore`2 for additional functionality.

A standard implementation using entity framework is provided in the Lib.Storage.EntityFramework package.

Generic Types
Name Description
TStorable Type of the storable
TAggregateKey Type of the key that aggregates TStorable

<a name='T-Semantica-Storage-DataStores-IDataStore`2'></a>

IDataStore`2 type

Namespace

Semantica.Storage.DataStores

Summary

Simple datastore

Generic Types
Name Description
TStorable
TKey

<a name='T-Semantica-Storage-IIdentity`1'></a>

IIdentity`1 type

Namespace

Semantica.Storage

Summary
Generic Types
Name Description
TId

<a name='P-Semantica-Storage-IIdentity`1-Id'></a>

Id property

Summary

Primary key of the entity

<a name='T-Semantica-Storage-IKeyConverter`2'></a>

IKeyConverter`2 type

Namespace

Semantica.Storage

Summary

Generic converter used by the base repository to convert keys into storables and back.

Generic Types
Name Description
TStorable Storable type
TKey Primary key type for entity

<a name='M-Semantica-Storage-IKeyConverter2-ToBlankStorable-1-'></a>

ToBlankStorable() method

Summary

Creates an empty storable with only key properties set. Used for removing entities.

Parameters

This method has no parameters.

<a name='M-Semantica-Storage-IKeyConverter2-ToKey-0-'></a>

ToKey() method

Summary

Makes a key from a storable.

Parameters

This method has no parameters.

<a name='T-Semantica-Storage-KeyConverter`2'></a>

KeyConverter`2 type

Namespace

Semantica.Storage

Summary

Generic implementation of IKeyConverter`2 that can be instantiated with delegate functions to provide the conversions.

Generic Types
Name Description
TStorable Type of the storable class.
TKey Primary key type for the entity or value object in domain.
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 is compatible.  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 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Semantica.Lib.Storage:

Package Downloads
Semantica.Lib.Domain.Data

Provides (base class) implementations of the repository interfaces from Sematica.Lib.Domain. These implementations generally assume a strict separation between the domain-level entity models and storable counterparts used in the storage (persistence) layer. For this, the repository base classes are dependent on injected implementations of the converter interfaces also provided in this package. The repository base is also dependent on an injected IDataStore for the entity's storage type, and a IPropertyAnalyser which is used to identify immutable properties on the storable model. Those properties will be ignored when doing replaces/updates using the default implementations. The package provides a default implementation for this interface that utilizes the ImmutableAttribute from the Semantica.Lib.Storage.Attributes namespace. The repository base classes will implement all standard IRepository members, while additional required custom members can be easily added.

Semantica.Lib.Storage.Data

Provides implementations for the abstractions provided by Semantica.Lib.Storage that are independent of EntityFramework. At the moment, that's only the StorageCache implementation.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
8.1.0-beta 89 5/30/2025
8.0.7-beta 76 9/6/2024
8.0.6-beta 690 7/10/2024
8.0.5-beta 123 7/4/2024
8.0.4-beta 92 7/2/2024
8.0.3-beta 74 6/14/2024
8.0.2-beta 140 6/4/2024
8.0.1-beta 72 6/4/2024
8.0.0-beta 73 6/4/2024
6.6.1-beta 211 4/5/2024
6.6.0-beta 243 3/5/2024
6.5.5-alpha2 85 3/4/2024
6.5.4-beta 109 2/29/2024
6.5.3-beta 525 10/5/2023
6.5.2-beta 101 10/5/2023
6.5.1-beta 155 9/29/2023
6.5.0-beta 116 9/22/2023
6.4.0-beta 437 7/11/2023
6.3.0-beta 137 6/15/2023
6.2.5-beta 209 3/14/2023
6.2.4-beta 588 10/12/2022
6.2.3-beta 277 9/1/2022
6.2.1-beta 182 8/25/2022