Skip to content

circles-arrows/blueprint41

Folders and files

NameName
Last commit message
Last commit date

Latest commit

df72ce2 · Jan 8, 2025
Nov 13, 2022
Dec 24, 2024
Jun 19, 2019
Apr 1, 2024
Apr 1, 2024
Apr 1, 2024
Dec 24, 2024
Dec 24, 2024
Dec 24, 2024
Dec 24, 2024
Apr 21, 2024
Jan 8, 2025
Dec 24, 2024
Dec 8, 2023
May 9, 2023
Sep 14, 2020
Jun 19, 2019
May 30, 2024
Feb 8, 2024
Feb 8, 2024
Feb 26, 2024
May 11, 2023
Jan 8, 2018
Oct 30, 2024
May 11, 2023
Feb 20, 2024
Apr 12, 2019
May 29, 2024
Jan 3, 2025
Jan 24, 2024
Jan 24, 2024
Feb 12, 2024
Feb 12, 2024
Jan 24, 2024

Repository files navigation

Blueprint41
 
✔️ Supports for Neo4j and Memgraph
✔️ Works Visual Studio, Visual Studio Code and Rider
✔️ Develop on Windows, macOS or Linux
 

Blueprint41

NuGet downloads repo size license Quality Gate Status

.NET ORM for Neo4j and Memgraph Database

Simplify database operations through generated data access objects.

Frictionless Development with Intellisense

Intellisense

Neo4j Plugins (Optional)

To learn more, please visit Extension and Plugins.

Documentation

To learn more, please visit Blueprint41 wiki.

Connection

PersistenceProvider.CurrentPersistenceProvider = new Neo4JPersistenceProvider($"bolt://localhost:7687", $"neo4j", $"password");

Automated Deployment of Schema Upgrades

// Datastore defines the latest schema definition
Datastore model = new Datastore();

// Sync database schema with the latest upgrade scripts
model.Execute(true);

Type Safe Creation of Nodes and Relationships

using (Transaction.Begin())
{
    Movie matrix = new Movie()
    {
        Title = "The Matrix",
        Tagline = "Welcome to the Real World",
        Released = new DateTime(1999, 3, 31)
    };

    Person keanu = new Person()
    {
        Name = "Keanu Reeves",
        Born = new DateTime(1964, 9, 2)
    };

    Person lana = new Person()
    {
        Name = "Lana Wachowski",
        Born = new DateTime(1961, 7, 30)
    };

    Person lilly = new Person()
    {
        Name = "Lilly Wachowski",
        Born = new DateTime(1967, 12, 29)
    };
    
    // Creates relationship via Type-safe generated objects
    movie.Actors.Add(keanu);
    movie.Directors.Add(lana);
    movie.Directors.Add(lilly);
    movie.Genre.Add(Genre.Load(Genre.StaticData.Name.Action));
    movie.Genre.Add(Genre.Load(Genre.StaticData.Name.Sci_Fi));

    // Commits detected changes to database
    Transaction.Commit(); 
}

Type Safe Querying of the Graph

using (Transaction.Begin())
{
    // Get Movies of Keanu(Direct relationship)
    Person keanu = Person.LoadByName("Keanu Reeves");
    EntityCollection<Movie> movies = keanu.ActedIn; // Movies are retrieve here

    // Get Director of Keanu(Spans multiple relationships)
    var query = Transaction.CompiledQuery
    .Match
    (
        Node.Person.Alias(out var director)
            .In.PERSON_DIRECTED_MOVIE.Out.
        Movie
            .Out.PERSON_ACTED_IN_MOVIE.In.
        Person.Alias(out var actor)
    )
    .Where(actor.Name == "Keanu Reeves")
    .Return(director)
    .Compile();

    List<Person> directors = Person.LoadWhere(query);
}