You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/docs/release-notes/sqlite-documentdb.mdx
+16-17Lines changed: 16 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,27 +5,26 @@ tableOfContents: true
5
5
6
6
importRNfrom'/src/components/ReleaseNote.astro';
7
7
8
-
## 1.2 - February 24, 2026
9
-
<RNtype="feature">Expression-based OrderBy (ascending/descending) on all GetAll, Query, GetAllStream, and QueryStream methods — translates to ORDER BY json_extract SQL</RN>
10
-
<RNtype="feature">Scalar aggregates: Max, Min, Sum, Average with optional predicate filters</RN>
11
-
<RNtype="feature">Aggregate projections with automatic GROUP BY via Sql.Count(), Sql.Max(), Sql.Min(), Sql.Sum(), Sql.Avg() marker methods</RN>
12
-
<RNtype="feature">Collection-level aggregates in projections: Sum, Min, Max, Average on child collections (e.g. o.Lines.Sum(l => l.Quantity))</RN>
13
-
14
-
## 1.1 - February 23, 2026
15
-
<RNtype="feature">SetProperty — update a single scalar JSON field via json_set without deserializing the document. Supports nested paths (e.g. o.ShippingAddress.City)</RN>
16
-
<RNtype="feature">RemoveProperty — strip a field from the stored JSON via json_remove. Works on any property type including collections and nested objects</RN>
17
-
<RNtype="feature">Both SetProperty and RemoveProperty have reflection-based and AOT-safe overloads, and work inside transactions</RN>
18
-
19
-
## 1.0 - February 22, 2026
20
-
<RNtype="feature">Initial Public Release</RN>
8
+
## 1.0 - February 2026
21
9
<RNtype="feature">Schema-free JSON document storage on top of SQLite</RN>
22
10
<RNtype="feature">LINQ expression queries translated to json_extract SQL with support for equality, comparisons, logical operators, null checks, string methods, nested properties, and collection queries</RN>
23
-
<RNtype="feature">SQL-level projections via json_object for extracting specific fields without full deserialization</RN>
24
-
<RNtype="feature">IAsyncEnumerable streaming with GetAllStream and QueryStream</RN>
Copy file name to clipboardExpand all lines: src/content/docs/sqlite-docdb/aot.mdx
+10-15Lines changed: 10 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,42 +52,37 @@ var store = new SqliteDocumentStore(new DocumentStoreOptions
52
52
});
53
53
```
54
54
55
-
## Auto-resolving type info from the context
55
+
## Optional JsonTypeInfo<T> parameters
56
56
57
-
When a `JsonSerializerContext` is attached to `JsonSerializerOptions`, the reflection-marked overloads (without `JsonTypeInfo<T>`) automatically resolve type info from the configured resolver. You can configure the context once and skip passing `JsonTypeInfo<T>` on every call — while retaining full AOT safety.
57
+
All `JsonTypeInfo<T>` parameters across the entire API are optional (`= null` default). When omitted, type info is automatically resolved from the configured `JsonSerializerOptions.TypeInfoResolver`. You can configure a `JsonSerializerContext` once and skip passing `JsonTypeInfo<T>` on every call — while retaining full AOT safety.
58
58
59
-
|Without resolver (explicit `JsonTypeInfo<T>`)| With resolver (auto-resolved) |
59
+
|With explicit `JsonTypeInfo<T>`| With auto-resolution (recommended) |
Expression-based queries (`store.Query(u => u.Age > 30, ctx.User)`) and projections always require explicit `JsonTypeInfo<T>` because the LINQ expression visitor needs type metadata to resolve JSON property names. Auto-resolution applies to the 10 methods in the table above.
89
-
:::
90
-
91
86
## Disabling reflection fallback
92
87
93
88
By default (`UseReflectionFallback = true`), if no resolver is configured or the type isn't registered, methods fall back to reflection-based serialization. This preserves backwards compatibility.
**How it works:** The expression `u => u.Age` is resolved to the JSON path `$.age` (respecting `[JsonPropertyName]` attributes and naming policies). The SQL executed is:
@@ -73,13 +73,13 @@ WHERE Id = @id AND TypeName = @typeName;
Unlike `SetProperty`, `RemoveProperty` works on any property type — scalar, nested object, or collection — because it simply removes the key from the JSON.
@@ -96,25 +96,31 @@ Unlike `SetProperty`, `RemoveProperty` works on any property type — scalar, ne
0 commit comments