Compatibility and support¶
This is GraphBridge's support contract: the exact stack it is built and tested on, the Neo4j servers it has run against, what each feature supports, and what may change between previews. Anything not listed here is unsupported or unverified.
Developer preview¶
GraphBridge is a developer preview (0.1.0-preview.3; see the changelog). That means:
- It is not production-supported. Use it to evaluate, learn and give feedback.
- Public APIs, generated source, supported model shapes and persisted mapping contracts may change between previews. Pin the exact preview.
- The packages are prereleases on nuget.org: GraphBridge.EntityFrameworkCore and optional packages (see packages and components). Getting started shows how to try unreleased changes from a local feed.
- "Supported" below means implemented and tested within the stated boundary, on the stack below. It is not a promise for other versions, editions or deployments.
Report problems through the repository's issue templates with exact versions, a small synthetic model, the LINQ or Fluent query and the sanitized generated Cypher. Never attach credentials or private data.
Exact stack¶
| Component | Version | Notes |
|---|---|---|
| .NET SDK | 10.0.401 | Pinned in global.json with roll-forward disabled |
| Target framework | net10.0 |
Tested on runtime 10.0.12; other runtimes are unverified |
| Entity Framework Core | 10.0.13 | Exact central pin; signatures checked against EF source tags v10.0.12 and v10.0.13 |
| Neo4j.Driver | 6.3.0 | The package reports assembly version 6.3.11.0; the informational version identifies 6.3.0 |
| Optional tooling libraries | dotNetRdf 3.5.2, YamlDotNet 18.1.0, Roslyn 5.9.0, AngleSharp 1.5.0 | Used by GraphBridge.Tooling and the generator only; never by the provider at run time |
The provider package declares minimum dependency versions. NuGet may resolve newer EF Core or driver versions; that is not a compatibility claim. Pin EF Core 10.0.13 and Neo4j.Driver 6.3.0 in your application, and use matching GraphBridge versions for the provider, GraphBridge.Tooling and GraphBridge.Generators.
Neo4j servers and editions¶
| Server | Status | Scope |
|---|---|---|
Neo4j 2026.09.0 Community, single server, database neo4j |
Verified | All provider, tooling, sample and workshop live suites. Statements use the server's default Cypher dialect; actual plans report Cypher 25 |
| Neo4j 2026.09.0 Enterprise, dedicated database | Verified for one runtime profile | Seven restricted-user facts with reviewed grants: reader and writer CRUD, the schema-visibility requirement and refused administration. No Enterprise schema deployment, Graph Type deployment or tenant isolation claim |
| Neo4j 5.26.18 Community | Read-only probe | Doctor and schema inspection, three Verify plans, one bounded LINQ projection and one Fluent/native comparison; plans report Cypher 5. No CRUD claim. Vector and full-text search are refused without fallback |
| Other 5.x, 2025.x and 2026.x releases | Untested | Capability detection recognizes them; nothing else is claimed |
| Clusters, multiple databases | Untested | Routing, bookmarks, leader changes and failover are not tested |
Features that need Cypher 25 select it explicitly: vector and full-text search, and Graph Type inspection. See graph search for its own capability gate.
Version and edition capability detection¶
Schema inspection, Doctor and the deployment preflight read the server's version and edition from dbms.components() and derive which schema features exist:
var capabilities = (await db.Database.InspectGraphSchemaAsync()).Capabilities;
Console.WriteLine($"{capabilities.ServerVersion} {capabilities.Edition}: " +
$"relationship keys {capabilities.RelationshipUniqueness}, existence {capabilities.PropertyExistence}");
| Capability | Available on |
|---|---|
| Node uniqueness constraints, range indexes | Every recognized server |
| Relationship uniqueness constraints | 5.7 and later |
| Property existence constraints | Enterprise |
| Property type constraints | Enterprise, 5.9 and later |
| Node and relationship key constraints | Enterprise, 5.7 and later |
| Current Graph Type observation | Enterprise 2026.06 and later, advertising Cypher 25 |
Recognized versions are 5.x and the calendar releases 2025.01 to 2026.12; recognized editions are community and enterprise. For anything else every capability is Unknown, and unknown is treated as unsupported. Each value is Supported, Unsupported or Unknown, derived from documented availability, not a certification of that server.
When the version or edition is not recognized, Doctor reports GBD-CAP-001 (server capability could not be established) and the sample schema preflight exits with code 3. Check the server version and edition you are connected to, and that the account can call dbms.components(); then use a server from the table above. Connecting successfully does not certify every server capability.
Feature support¶
| Surface | Supported | Boundary |
|---|---|---|
| Mapping and tracking | EF tracking, no tracking and no tracking with identity resolution | The finalized EF model and state manager stay authoritative |
| LINQ queries | Async node and relationship roots, scalar comparisons, Boolean and null predicates, direct-property ordering, paging, scalar and DTO projections, First/Single variants, Count/LongCount/Any, integer Min/Max, bounded scalar Contains | Other shapes are refused before execution with a GBQ code; no client-side evaluation |
| Fluent Cypher | Typed MATCH and OPTIONAL MATCH patterns, anonymous edges, C# lambda predicates and ordering, explicit native predicates, WITH, counts, aggregates (Min, Max, Sum, Avg, bounded Collect), EXISTS, scalar DTOs, bounded named paths |
Read-only native semantics and untracked results. A lambda that native Cypher would evaluate differently is refused with a GBFC code. No write DSL, EF query filters, IQueryable composition or full Cypher promise |
| Native Cypher | QueryCypherAsync with an explicit projector and row cap |
Untracked; does not refresh tracked entities |
| Persistence | Atomic SaveChangesAsync, modified-property updates, null removal, restrictive deletes, optimistic concurrency |
Async only; reviewed key uniqueness constraints required (decision) |
| Bulk mutations | Async ExecuteUpdateAsync/ExecuteDeleteAsync over supported node and relationship roots, in atomic lock-and-recheck batches |
10,000-row cap, restricted setters, the EF tracker is not updated |
| Transactions | Async explicit commit and rollback shared by saves, LINQ, Fluent and native queries | No savepoints, automatic retries, ambient or nested transactions, or guaranteed outcome after a lost commit acknowledgement |
| References | Required and optional native references; one direct Include in either direction; optional parent changes | No required foreign-key reassignment |
| Associations | Explicit or dictionary EF join entities stored as one relationship per endpoint pair, with payload | Duplicate physical pairs are refused; no association Include |
| Identified relationships | Application relationship keys, parallel relationships, payload, CRUD and fix-up | Endpoints are immutable; no composite relationship keys or Include |
| Scalars and time | Nullable primitives, Guid, enum, native DateTimeOffset, explicit reversible converters |
No temporal keys or membership, date arithmetic, other native temporal types, decimal or arrays |
| Search | Explicit node and relationship vector and full-text APIs, typed scores and index provenance | Cypher 25 with capability and index checks; untracked DTOs; approximate vector results |
| Paths | Typed native paths with required direction, depth and result bounds | Untracked; no shortest or weighted path promise, no EF query filters |
| Schema and migrations | Read-only inspection and drift checks, reviewed proposals, typed migration plans with journal and explicit recovery | No implicit DDL, whole-plan atomicity, automatic Down or dotnet ef migrations |
| Inspection and tracing | ToQueryString(), explicit EXPLAIN plans, command tracing |
EXPLAIN needs explicit parameters and plan arguments may contain literals; PROFILE executes |
| Authoring | Code-first, ontology/schema-first and database-first; optional mapping generator | The ontology is an explicit subset, not OWL reasoning; sampled graphs do not prove global integrity |
| Design-time | dotnet ef dbcontext list/info; application-hosted migration catalog, preview and read-only status |
No relational migration commands or automatic model diff |
| Tools | Doctor, Verify, Query Lab and the authoring CLI (packages and components) | Diagnostics read metadata and plans; they never repair schema |
Changes and upgrade policy¶
During 0.x previews, public APIs, generated source, supported model shapes and persisted mapping contracts may change. Pin the exact preview and tested EF/driver versions. Each subsequent preview must identify changed APIs/mappings, affected applications, required regeneration or explicit data migration, and actual acceptance evidence. A breaking mapping change must never silently rewrite an existing database. Review the diff and migration preview, back up affected data and verify on a disposable copy before applying a reviewed plan.
Once published, an existing version's package contents must not be replaced. A changed artifact receives a new version. A 1.0 designation requires a separately declared stable support contract and operational evidence; completing the original private roadmap did not supply that promise.
Each version's upgrade notes are in the changelog.
Evidence: version and capability matrix, EF conformance matrix, verification summary, Fluent Cypher acceptance, central package pins.