Cvoya.Graph 1.0.0

Prefix Reserved
dotnet add package Cvoya.Graph --version 1.0.0
                    
NuGet\Install-Package Cvoya.Graph -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Cvoya.Graph" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Cvoya.Graph" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Cvoya.Graph" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Cvoya.Graph --version 1.0.0
                    
#r "nuget: Cvoya.Graph, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Cvoya.Graph@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Cvoya.Graph&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Cvoya.Graph&version=1.0.0
                    
Install as a Cake Tool

Downloadable open-source computer software from CVOYA. See the CVOYA software catalog.

Cvoya.Graph

NuGet License

Cvoya.Graph is the provider-neutral model, LINQ query surface, transaction contract, and mutation API for CVOYA Graph.

Entity model

IEntity is an empty marker. INode exposes labels and IRelationship exposes its type; neither interface exposes provider identity. Relationship endpoints and physical direction are returned by path segments rather than stored on relationship values.

Domain keys are optional:

[Node(Label = "User")]
public record User : Node
{
    [Property(IsKey = true)]
    public string Email { get; set; } = string.Empty;

    public string Name { get; set; } = string.Empty;
    public bool IsActive { get; set; }
}

[Relationship(Label = "FOLLOWS")]
public record Follows : Relationship
{
    public DateTime Since { get; set; }
}

Remove IsKey and User remains a valid keyless entity. A property named Id or Direction is ordinary domain data unless its attributes say otherwise.

Query and mutation

Install a database provider, obtain its IGraph, and compose synchronous query roots with async terminals:

var activeUsers = await graph.Nodes<User>()
    .Where(user => user.IsActive)
    .OrderBy(user => user.Name)
    .ToListAsync(cancellationToken);

var updated = await graph.Nodes<User>()
    .Where(user => user.Email.EndsWith("@old.example"))
    .UpdateAsync(setters => setters
        .SetProperty(user => user.IsActive, false),
        cancellationToken);

Create relationships by supplying endpoint intent separately from relationship data:

var alice = graph.Nodes<User>().Where(user => user.Email == "alice@example.com");
var bob = graph.Nodes<User>().Where(user => user.Email == "bob@example.com");

await graph.CreateRelationshipAsync(
    alice,
    new Follows { Since = DateTime.UtcNow },
    bob,
    cancellationToken: cancellationToken);

Each selected endpoint must resolve to exactly one node. Hybrid and all-new overloads are also available through CreateAsync; CreateSelfLoopAsync handles one new node used as both endpoints.

Core contracts

  • IGraph — query roots, search, transactions, standalone node creation, and managed-index refresh
  • IGraphQueryable<T> — typed LINQ composition, traversal, and async terminals
  • INode, IRelationship, IGraphPath, and IGraphPathSegment — portable graph values
  • GraphCommandExtensions — endpoint-intent creation plus set-based update and delete
  • [Node], [Relationship], and [Property] — mapping and optional schema metadata

See the complete documentation, the contributing guide, and the Apache 2.0 license.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on Cvoya.Graph:

Package Downloads
Cvoya.Graph.Serialization

Serialization abstractions and materialization for CVOYA Graph.

Cvoya.Graph.Cypher

CVOYA Graph typed Cypher AST and validation framework for graph query generation.

Cvoya.Graph.CompatibilityTests

A shippable compatibility test suite (TCK) for CVOYA Graph providers: a harness SPI, capability-aware skips, and a compliance guard, so a provider can prove it implements the CVOYA Graph contract.

Cvoya.Graph.Neo4j

CVOYA Graph provider for Neo4j, with LINQ support and the Cvoya.Graph abstraction.

Cvoya.Graph.Age

CVOYA Graph provider for PostgreSQL and Apache AGE, with LINQ support for the Cvoya.Graph abstraction.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 43 7/23/2026
1.0.0-alpha.20260717 98 7/17/2026