TwoFiveThree.Repository
2.0.3
dotnet add package TwoFiveThree.Repository --version 2.0.3
NuGet\Install-Package TwoFiveThree.Repository -Version 2.0.3
<PackageReference Include="TwoFiveThree.Repository" Version="2.0.3" />
<PackageVersion Include="TwoFiveThree.Repository" Version="2.0.3" />
<PackageReference Include="TwoFiveThree.Repository" />
paket add TwoFiveThree.Repository --version 2.0.3
#r "nuget: TwoFiveThree.Repository, 2.0.3"
#:package TwoFiveThree.Repository@2.0.3
#addin nuget:?package=TwoFiveThree.Repository&version=2.0.3
#tool nuget:?package=TwoFiveThree.Repository&version=2.0.3
TwoFiveThree.Repository
Core abstractions for the TwoFiveThree repository library. This package provides the base interfaces, classes, and DI registration hooks that provider packages build upon.
Packages
| Package | Description |
|---|---|
TwoFiveThree.Repository |
Core abstractions (this package) |
TwoFiveThree.Repository.SqlBase |
Base implementation for Sql-based connections |
TwoFiveThree.Repository.Psql |
PostgreSQL provider |
TwoFiveThree.Repository.MySql |
MySQL provider |
Requirements
- .NET Standard 2.0+ (.NET Framework 4.6.1, .NET Core, .NET 5+)
Installation
dotnet add package TwoFiveThree.Repository
Install a provider alongside it:
dotnet add package TwoFiveThree.Repository.Psql
# or
dotnet add package TwoFiveThree.Repository.MySql
Getting Started
1. Register in DI
using TwoFiveThree.Repository;
using TwoFiveThree.Repository.Psql;
builder.Services.AddRepository(options =>
options.UsePsql(connectionString));
2. Define your entities
Implement IEntity and decorate with [Table] and [PrimaryKey]:
[Table("products")]
[PrimaryKey("id")]
public class Product : IEntity
{
public Guid Id { get; set; }
public string Name { get; set; } = default!;
public decimal Price { get; set; }
}
3. Inject and use
public class ProductService(IRepository repository)
{
public async Task<Product?> GetProductAsync(Guid id) =>
await repository.SelectByIdAsync<Product>([id]);
}
Multiple Connections
If your project requires more than one database connection, use named registrations (.NET 8+):
builder.Services.AddRepository("primary", options =>
options.UsePsql(primaryConnectionString));
builder.Services.AddRepository("replica", options =>
options.UsePsql(replicaConnectionString));
builder.Services.AddRepository("migration", options =>
options.UseMySql(migrationConnectionString));
Inject by name:
public class ProductService(
[FromKeyedServices("primary")] IRepository primary,
[FromKeyedServices("replica")] IRepository replica)
{ }
Key Abstractions
IEntity
Marker interface that all entity classes must implement. Enforced at compile time by TwoFiveThree.Repository.Analysers (to be implemented).
IRepository
The main interface for data access. Inject this in your application code — never depend on a concrete provider type.
RepositoryOptions
Used during DI registration to configure which provider to use. Extended by provider packages via extension methods (e.g. UsePsql(), UseMySql()).
Attributes
| Attribute | Target | Description |
|---|---|---|
[Table("name")] |
Class | Maps the entity to a database table |
[PrimaryKey("col")] |
Class | Specifies the primary key column(s) |
[Column("name")] |
Property | Maps a property to a column with a different name |
[ForeignKey("col")] |
Property | Specifies a foreign key relationship |
[EntityIgnore] |
Property | Ignores the property during mapping |
[IgnoreOnAudit] |
Property | Ignored in the audit entity when using Insert,Update or UpsertWithAudit |
[RedactOnAudit] |
Property | Redact sensitive data changes when using Insert,Update or UpsertWithAudit |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. 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. |
| .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
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.7)
- Microsoft.Extensions.Options (>= 10.0.7)
- System.ComponentModel.Annotations (>= 5.0.0)
- System.Data.Common (>= 4.3.0)
- System.Text.Json (>= 10.0.7)
- System.Text.RegularExpressions (>= 4.3.1)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on TwoFiveThree.Repository:
| Package | Downloads |
|---|---|
|
TwoFiveThree.Repository.SqlBase
Base implementation for SQL-based repositories using Dapper |
|
|
TwoFiveThree.Repository.MySql
MySql Implementation of the TwoFiveThree repository |
|
|
TwoFiveThree.Repository.Psql
PostgreSql Implementation of the TwoFiveThree repository |
GitHub repositories
This package is not used by any popular GitHub repositories.