Куда поместить экземпляр драйвера 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;
}
Другие вопросы по тегам