C# neo4jclient在创建单个节点时性能不佳

C# neo4jclient在创建单个节点时性能不佳,c#,.net-core,neo4jclient,C#,.net Core,Neo4jclient,使用Neo4jClient访问本地Neo4j测试数据库创建一个简单的节点大约需要2秒钟 我有一台Neo4j 3.5.12服务器在我的机器上本地运行,用于开发目的,通过ASP.NET Core(.NET Core 3)上的可怕的Neo4jClient.NET连接到它 按照Neo4jClient文档中的建议,Microsoft DI配置: public static void AddNeo4jClient(this IServiceCollection services) { service

使用Neo4jClient访问本地Neo4j测试数据库创建一个简单的节点大约需要2秒钟

我有一台Neo4j 3.5.12服务器在我的机器上本地运行,用于开发目的,通过ASP.NET Core(.NET Core 3)上的可怕的Neo4jClient.NET连接到它

按照Neo4jClient文档中的建议,Microsoft DI配置:

public static void AddNeo4jClient(this IServiceCollection services)
{
    services.AddSingleton<NeoServerConfiguration>(serviceProvider =>
    {
        var settings = serviceProvider.GetService<IOptions<Neo4jSettings>>().Value;
        return NeoServerConfiguration.GetConfiguration(settings.Url, settings.Username, settings.Password);
    });

    services.AddSingleton<IGraphClientFactory, GraphClientFactory>();
}
当我跨过等待语句时,大约需要2秒。这似乎不是一个预热问题,因为再次调用函数时会发生相同的延迟。我的印象是,由于NeoServerConfiguration注册为singleton,URL发现的开销只进行了一次,因此我应该能够以暂时的方式创建新的IGRaphClient


我是否错过了某些配置?

是否每次运行此操作时都要创建
GraphClient
实例?什么是
图形客户端工厂
?每个会话应该有一个
IGraphClient
实例-你绝对不应该每次都创建一个新的GraphClient实例是的,我开始认为我需要为IGraphClient创建一个单实例。“线程和生活方式”下的文档声明“您可以使用单个neo服务器配置对象,并通过使用IGraphClientFactory而不是singleton为每个请求使用graph client”-我希望能够实现这一点。我从来没有这样做过,我不知道您为什么会这样做-文档没有门控,因此,我不确定为什么会出现这种情况——每次创建graphclient时,您都必须进行连接,这是您的时间添加。这主要是一种带支架的方法:“这可能有利于可能发生并发事务异常的高事务环境”。据我所知,由于设置(NeoServerConfiguration)已经被提取到一个单例中,因此并不需要对GraphClient的每个实例进行URL发现,从而使其实例化变得轻量级。我一定是误解了什么,或者有什么错误。为了记录在案,我作为一个单身者切换到了一个IGraphClient,它的性能非常好。现在我会继续使用它。我会玩一下,看看你想要的设置——也许它是某个隐藏的配置
public async Task CreateUser(User user)
{
    using var client = _factory.Create();

    await client.Cypher
        .Create($"(n:{ NodeTypes.USER }) SET n = $newNode")
        .WithParam("newNode", user)
        .ExecuteWithoutResultsAsync();
}