What is the ordinary way to establish connections to Neo4j DB in ASP.NET Core programming?
The code in Neo4j Language Guides (https://neo4j.com/developer/language-guides/) works fine for a simple console app, but it doesn't explain how to code in ASP.NET, so I just copy & pasted the code to MVC scaffold:
public class TestController : Controller
{
public TestController()
{
_driver = GraphDatabase.Driver("bolt://localhost"));
}
private readonly IDriver _driver;
public string Index()
{
using (var session = _driver.Session())
{
var greeting = session.WriteTransaction(tx =>
{
var result = tx.Run("CREATE (a:Greeting) " +
"SET a.message = $message " +
"RETURN a.message + ', from node ' + id(a)",
new { message });
return result.Single()[0].As<string>();
});
return greeting;
}
}
}
Works fine but calling GraphDratabase.Driver() for every request doesn't seem to make sense.
Shouldn't it be registered to services? (AddSingleton() in Startup.cs?)
If so, how can I access the driver from the Controller?
Regestring it to services seems to be a good idea. You can do it like:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton(GraphDatabase.Driver("bolt://localhost"));
}
And then inject it to controllers:
public TestController(IDriver driver)
{
_driver = driver;
}