Jakar.Json.EntityFrameworkCore
10.2.0
dotnet add package Jakar.Json.EntityFrameworkCore --version 10.2.0
NuGet\Install-Package Jakar.Json.EntityFrameworkCore -Version 10.2.0
<PackageReference Include="Jakar.Json.EntityFrameworkCore" Version="10.2.0" />
<PackageVersion Include="Jakar.Json.EntityFrameworkCore" Version="10.2.0" />
<PackageReference Include="Jakar.Json.EntityFrameworkCore" />
paket add Jakar.Json.EntityFrameworkCore --version 10.2.0
#r "nuget: Jakar.Json.EntityFrameworkCore, 10.2.0"
#:package Jakar.Json.EntityFrameworkCore@10.2.0
#addin nuget:?package=Jakar.Json.EntityFrameworkCore&version=10.2.0
#tool nuget:?package=Jakar.Json.EntityFrameworkCore&version=10.2.0
Jakar.Json.EntityFrameworkCore
Stores [JsonModel] properties, and arrays, lists and collection interfaces of them, in JSON columns as Jakar.Json text. It works with any EF Core provider.
// one property
modelBuilder.Entity<Customer>().Property(x => x.Latest).HasJakarJsonConversion().HasColumnType("jsonb");
// every property of a type
protected override void ConfigureConventions(ModelConfigurationBuilder builder)
=> builder.Properties<Order>().HaveJakarJsonConversion();
JakarJsonValueConverter<T>converts between the value and Jakar.Json text. Set the column type your provider uses:jsonborjson(PostgreSQL),nvarchar(max)(SQL Server),TEXT(SQLite).JakarJsonValueComparer<T>makes change tracking work inside the model.- Two values are equal when Jakar.Json writes the same text for them, which it does deterministically (dictionaries and sets are written sorted).
- A snapshot is a deep copy.
- So
customer.Orders.Add(...)orcustomer.Latest.Lines[0].Quantity++is detected and saved, and assigning an equal copy saves nothing.
nullis stored as aNULLcolumn.- A type Jakar.Json can't serialize fails when the model is built, not at the first query.
EF Core's ToJson() owned-entity mapping uses EF's own JSON reader and writer, so this package doesn't change it. Use this converter for columns that hold a model as a single value.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- Jakar.Json (>= 10.2.0)
- Microsoft.EntityFrameworkCore (>= 10.0.13)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
10.2.0: built against Jakar.Json 10.2.0, whose writers take a ref TWriter; 10.1.0 calls the removed IBufferWriter overloads and throws MissingMethodException with Jakar.Json 10.2.0. 10.1.0: initial release.