TinyHelpers.EntityFrameworkCore
3.0.32
dotnet add package TinyHelpers.EntityFrameworkCore --version 3.0.32
NuGet\Install-Package TinyHelpers.EntityFrameworkCore -Version 3.0.32
<PackageReference Include="TinyHelpers.EntityFrameworkCore" Version="3.0.32" />
paket add TinyHelpers.EntityFrameworkCore --version 3.0.32
#r "nuget: TinyHelpers.EntityFrameworkCore, 3.0.32"
// Install TinyHelpers.EntityFrameworkCore as a Cake Addin #addin nuget:?package=TinyHelpers.EntityFrameworkCore&version=3.0.32 // Install TinyHelpers.EntityFrameworkCore as a Cake Tool #tool nuget:?package=TinyHelpers.EntityFrameworkCore&version=3.0.32
Tiny Helpers for Entity Framework Core
A collection of helper methods and classes for Entity Framework Core that I use every day. I have packed them in a single library to avoid code duplication.
Installation
The library is available on NuGet. Just search for TinyHelpers.EntityFrameworkCore in the Package Manager GUI or run the following command in the .NET CLI:
dotnet add package TinyHelpers.EntityFrameworkCore
Usage
Converters
The library provides some Value Converters to handle data types that are not natively supported by Entity Framework Core. They can be explicitly used calling the HasConversion method, or automatically via some extension methods:
// using TinyHelpers.EntityFrameworkCore.Extensions;
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>(builder =>
{
builder.Property(x => x.Title).HasMaxLength(80).IsRequired();
builder.Property(x => x.Content).IsRequired();
// Date is a DateOnly property (.NET 6 or 7).
//builder.Property(x => x.Date).HasDateOnlyConversion();
// Time is a TimeOnly property (.NET 6 or 7).
//builder.Property(x => x.Time).HasTimeOnlyConversion();
/* JSON SUPPORT */
// For .NET 6:
// Reviews is a complex type, this Converter will automatically JSON-de/serialize it
// in a string column.
// builder.Property(x => x.Reviews).HasJsonConversion();
// For .NET 7 or higher:
builder.OwnsMany(x => x.Reviews).ToJson();
/* COLLECTION OF PRIMITIVE TYPES */
// For .NET 6 and 7:
//builder.Property(x => x.Authors).HasArrayConversion();
// For .NET 8
// The support for collection of primitive types is built-in.
});
}
Query Filters
The library provides an extension method that allows to apply a global Query Filter to entities:
public abstract class DeletableEntity
{
public bool IsDeleted { get; set; }
}
public class Person : DeletableEntity { }
public class City : DeletableEntity { }
public class PhoneNumber : DeletableEntity { }
// using TinyHelpers.EntityFrameworkCore.Extensions;
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// Apply a filter to all the entities that inherit (directly or indirectly) from DeletableEntity.
modelBuilder.ApplyQueryFilter<DeletableEntity>(e => !e.IsDeleted);
}
Contributing
The project is constantly evolving. Contributions are welcome. Feel free to file issues and pull requests on the repo and we'll address them as we can.
Warning Remember to work on the develop branch, don't use the master branch directly. Create Pull Requests targeting develop.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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 is compatible. |
-
net8.0
- Microsoft.EntityFrameworkCore.Relational (>= 8.0.11)
- TinyHelpers (>= 3.2.3)
-
net9.0
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.0)
- TinyHelpers (>= 3.2.3)
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 |
---|---|---|
3.0.32 | 97 | 12/4/2024 |
3.0.27 | 2,345 | 10/9/2024 |
3.0.25 | 539 | 9/2/2024 |
3.0.24 | 746 | 7/10/2024 |
3.0.22 | 180 | 6/19/2024 |
3.0.19 | 1,970 | 5/15/2024 |
3.0.18 | 294 | 5/14/2024 |
3.0.17 | 150 | 5/9/2024 |
3.0.14 | 5,440 | 3/26/2024 |
3.0.12 | 348 | 2/27/2024 |
3.0.8 | 996 | 2/14/2024 |
3.0.6 | 243 | 2/12/2024 |
3.0.3 | 3,180 | 1/11/2024 |
3.0.2 | 6,935 | 11/21/2023 |
2.0.21 | 12,900 | 9/4/2023 |
2.0.20 | 4,264 | 6/29/2023 |
2.0.19 | 889 | 6/14/2023 |
2.0.18 | 3,841 | 4/12/2023 |
2.0.17 | 589 | 4/10/2023 |
2.0.16 | 1,897 | 3/27/2023 |
2.0.14 | 10,754 | 3/15/2023 |
2.0.13 | 1,246 | 3/1/2023 |
2.0.12 | 1,479 | 2/21/2023 |
2.0.10 | 4,234 | 1/11/2023 |
2.0.9 | 634 | 1/9/2023 |
2.0.4 | 956 | 11/30/2022 |
1.0.76 | 2,094 | 10/31/2022 |
1.0.72 | 7,130 | 9/21/2022 |
1.0.61 | 9,990 | 7/25/2022 |
1.0.59 | 1,064 | 6/30/2022 |
1.0.57 | 795 | 6/21/2022 |
1.0.56 | 1,577 | 6/2/2022 |
1.0.52 | 10,024 | 3/28/2022 |
1.0.48 | 1,539 | 2/7/2022 |
1.0.45 | 4,039 | 1/25/2022 |
1.0.43 | 772 | 1/20/2022 |
1.0.34 | 975 | 1/7/2022 |