Releases: neo4j/neo4j-dotnet-driver
5.21.0
5.20.0
5.18.1
5.18.0
What's Changed
- Add session auth to executeQuery by @RichardIrons-neo4j in #774
- Invariant capable records by @RichardIrons-neo4j in #780
- Change DictAsRecord to have non-surprising case sensitivity; increase… by @RichardIrons-neo4j in #782
- Fix race condition by @thelonelyvulpes in #785
Full Changelog: 5.17.0...5.18.0
5.17.0
5.16
5.15
5.14
⭐ New features
- Reauth moved from preview to general availability. (#744)
- Introduction of
Security
andTopology
notification categories. (#738) - Introduction of Bolt 5.4 (Introduced to Neo4j in server version 5.13) and TELEMETRY message. (#735
- The driver can opt out of telemetry collection using
ConfigBuilder.WithTelemetryDisabled()
. - Telemetry is only collected when connecting to aura and is limited to which APIs were used to create a transaction.
- The driver can opt out of telemetry collection using
⚠️ Bug fixes
- All cursors belonging to a transaction are now invalidated if an error invalidates any of the transaction's queries. (#737)
- If the initial exception was ignored, this could result in undefined behavior, but now will result in a
TransactionTerminatedException
; Any further interaction with any constituent results from the transaction will throw this error.
- If the initial exception was ignored, this could result in undefined behavior, but now will result in a
What's Changed
- Improve transaction timeout docs by @robsdedude in #731
- Add support for Bolt 5.4 and API Telemetry. by @thelonelyvulpes in #735
- docfx doc generation by @RichardIrons-neo4j in #736
- Add security and topology notification types by @RichardIrons-neo4j in #738
- Transaction error handling by @thelonelyvulpes in #737
- Tidying and minor refactoring by @RichardIrons-neo4j in #740
- Refactor the sprawl of driver and connection configs by @thelonelyvulpes in #730
- 5.14 version increment for next release by @thelonelyvulpes in #741
- Move auth to general availability by @thelonelyvulpes in #744
- Clean up folders by @thelonelyvulpes in #745
Full Changelog: 5.13.0...5.14.0
5.13.0
🔮 Preview Feature: Record to Object Mapping
This new feature allows records to be mapped to objects simply and without endless boilerplate. Please see this discussion for full details and instructions.
🔮 New convenience methods in preview
The following extension methods have been added in order to make code that deals with the IRecord
and IEntity
(implemented by both INode
and IRelationship
) interfaces more readable - for example, when writing custom mapping code. The Neo4j.Driver.Preview.Mapping
namespace must be referenced to use these methods.
IRecord.AsObject<T>()
Invokes the mapping functionality and returns an instance of T
mapped from the record. T
must have a parameterless constructor.
IRecord.GetValue<T>(string key)
Gets the value of the given key from the record, converting it to the given type. For example, the code record["name"].As<string>()
becomes record.GetValue<string>("name")
.
IRecord.GetXXXX(string key)
This is a group of extension methods for the most commonly used primitive types: GetString
, GetInt
, GetLong
, GetDouble
, GetFloat
and GetBool
. These just call GetValue<T>
for the type named in the method name, so record["name"].As<string>()
becomes record.GetString("name")
.
IEntity.GetValue<T>(string key)
Gets the value of the given key from the entity, converting it to the given type. For example, the code entity["name"].As<string>()
becomes entity.GetValue<string>("name")
.
IEntity.GetXXXX(string key)
The same group of methods as IRecord.GetXXXX
, but for an entity.
IRecord.GetEntity(string key)
Gets the IEntity
identified by the given key from the record. When combined with the other methods, this can lead to more readable code that gets values from entities within records, so for example this code:
var name = record["person"].As<IEntity>().Properties["name"].As<string>();
becomes:
var name = record.GetEntity("person").GetString("name");
5.12.0
🚀 Optimization
- ExecutableQuery performance enhancement: Remove a server round-trip for
IDriver.ExecutableQuery
API Docs.
🔬 Experimental/Preview changes
- Changes to the re-auth functionality allow for catering to a wider range of use cases including simple password rotation.
- All re-auth-related namespaces have been moved to preview - previously some did not have this, although the classes therein would not have been usable.
- The
OnTokenExpiredAsync
method in theIAuthTokenManager
interface was removed, and a newHandleSecurityExceptionAsync
method was added in its place. - The
ExpirationBased
method inAuthTokenManagers
was renamed to Bearer, and a new Basic method was added to cater for password rotation.