An Object Graph Mapper for CSharp to connect to Neo4j or Memgraph. It has support for defining the object model as a schema. It support refactor scripts written in CSharp, which you can add to your project. When you run your program and the graph is of an older version, the upgrade script will automatically be executed against the graph. It also support generation of type-safe data objects, so you know at compile time if your code is compatible with the latest upgrades.
$ dotnet add package Blueprint41✔️ Supports for Neo4j and Memgraph
✔️ Works Visual Studio, Visual Studio Code and Rider
✔️ Develop on Windows, macOS or Linux

Simplify database operations through generated data access objects.

To learn more, please visit Extension and Plugins.
To learn more, please visit Blueprint41 wiki.
PersistenceProvider.CurrentPersistenceProvider = new Neo4JPersistenceProvider($"bolt://localhost:7687", $"neo4j", $"password");
// Datastore defines the latest schema definition
Datastore model = new Datastore();
// Sync database schema with the latest upgrade scripts
model.Execute(true);
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();
}
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);
}