【问题标题】:Where to Put Neo4j Driver Instance in ASP.NET Core 2.1?在 ASP.NET Core 2.1 中将 Neo4j 驱动程序实例放在哪里?
【发布时间】:2018-07-15 07:42:02
【问题描述】:

在 ASP.NET Core 编程中建立与 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() 吗?)

如果可以,如何从 Controller 访问驱动程序?

【问题讨论】:

    标签: asp.net-core neo4j asp.net-core-mvc asp.net-core-mvc-2.1


    【解决方案1】:

    将其注册到服务似乎是一个好主意。你可以这样做:

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
    
            services.AddSingleton(GraphDatabase.Driver("bolt://localhost"));
        }
    

    然后将其注入控制器:

    public TestController(IDriver driver)
    {
      _driver = driver;
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-10
      • 1970-01-01
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多