ASP.NET Core 2.1 中将 Neo4j 驱动程序实例放在哪里?
Where to Put Neo4j Driver Instance in ASP.NET Core 2.1?
在ASP.NET核心编程中建立与Neo4j DB的连接的常用方法是什么?
Neo4j 语言指南 (https://neo4j.com/developer/language-guides/) 中的代码适用于简单的控制台应用程序,但它没有解释如何在 ASP.NET 中编写代码,所以我只是复制并粘贴代码到 MVC 脚手架:
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;
}
}
}
工作正常,但为每个请求调用 GraphDratabase.Driver() 似乎没有意义。
不应该注册到服务吗?
(Startup.cs 中的 AddSingleton()?)
如果是这样,我如何从控制器访问驱动程序?
将其注册到服务似乎是个好主意。你可以这样做:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton(GraphDatabase.Driver("bolt://localhost"));
}
然后注入控制器:
public TestController(IDriver driver)
{
_driver = driver;
}
在ASP.NET核心编程中建立与Neo4j DB的连接的常用方法是什么?
Neo4j 语言指南 (https://neo4j.com/developer/language-guides/) 中的代码适用于简单的控制台应用程序,但它没有解释如何在 ASP.NET 中编写代码,所以我只是复制并粘贴代码到 MVC 脚手架:
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;
}
}
}
工作正常,但为每个请求调用 GraphDratabase.Driver() 似乎没有意义。
不应该注册到服务吗? (Startup.cs 中的 AddSingleton()?)
如果是这样,我如何从控制器访问驱动程序?
将其注册到服务似乎是个好主意。你可以这样做:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton(GraphDatabase.Driver("bolt://localhost"));
}
然后注入控制器:
public TestController(IDriver driver)
{
_driver = driver;
}