如何处理新的 ConnectAsync API (C# Neo4jClient)

How to handle the new ConnectAsync API (C# Neo4jClient)

我将 Neo4JClient 更新到 4.x 版本,其中包括从 client.Connect();client.ConnectAsync() 的重构。当向 api 发出请求时,连接到 neo4j 的控制器将被实例化,因此在连接和使用连接之间没有太多时间。异步连接所以我的猜测让我遇到了问题,当我已经发出数据库请求时客户端没有连接。我试图通过等待 ResultsAsync 来解决这个问题,但没有解决问题。目前没有文档存在,因为它已经过时了。这是我的代码:

        // The client is getting injected from my server
        public MyService(GraphClient client)
        {
            this.client = client;
            this.client.ConnectAsync();
        }

        public async Task<bool> Login(string username, string password)
        {
            var query = client.Cypher
                .Match("(n)")
                .Where("n.username = '" + username + "' AND n.password = '" + password + "'")
                .Return(n => n.As<User>());

            var queryResult = await query.ResultsAsync;
            return queryResult.ToList().Count == 1;
        }

在你的构造函数中,你会做:

var task = this.client.ConnectAsync();
task.Wait();

或者你可以这样做:

this.client.ConnectAsync().Wait();

还有一些额外的事情,您正在注入的 GraphClient 实际上应该是 IGraphClient - 如果您以后决定更改为 Bolt 版本,这将使您更容易。

另一个更重要的是,注入它的服务器应该已经完成​​了 ConnectAsync 位 - 你只想调用一次,如果它被注入多个 类 ,它会被调用不止一次。