Куда поместить экземпляр драйвера Neo4j в ASP.NET Core 2.1?
Как обычно установить соединения с БД Neo4j в программировании на ASP.NET Core?
Код в Neo4j Language Guides ( 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() для каждого запроса не имеет смысла.
Разве это не должно быть зарегистрировано в службах? (AddSingleton() в Startup.cs?)
Если да, как я могу получить доступ к драйверу из контроллера?
1 ответ
Решение
Повторное включение этого в сервисы кажется хорошей идеей. Вы можете сделать это как:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton(GraphDatabase.Driver("bolt://localhost"));
}
А затем внедрить его в контроллеры:
public TestController(IDriver driver)
{
_driver = driver;
}