入门

关于官方 .NET 驱动程序

Neo4j 为许多流行的编程语言提供官方驱动程序。这些驱动程序由 Neo4j 支持。

许多语言也存在社区驱动程序,但其功能集、成熟度和支持差异很大。要了解有关社区驱动程序的更多信息,请访问 https://neo4j.ac.cn/developer/language-guides/

以下语言和框架由 Neo4j 官方支持

表 1. 5.x 驱动程序系列支持的语言和框架
语言/框架 支持的版本

.NET

.NET Standard 2.0。

Go

Java

Java 17。

JavaScript

Python

Python 3.7 及以上版本。

驱动程序 API 旨在与拓扑无关。这意味着底层数据库拓扑(单实例、因果集群等)可以更改,而无需对应用程序代码进行相应的更改。

在一般情况下,当对拓扑进行更改时,只需要修改 连接 URI

官方驱动程序不支持 HTTP 通信。如果您需要 HTTP 驱动程序,请选择一个社区驱动程序。

另请参阅 HTTP API 文档

驱动程序版本和安装

在可能的情况下,建议使用最新的稳定驱动程序版本。这将提供最大的稳定性,并确保所有服务器功能都可用。驱动程序与 **Neo4j 企业版** 一起使用时,具有完整的集群路由支持。但是,驱动程序不会在 **企业版** 和 **社区版** 之间进行显式区分,而只是使用 **Neo4j** 本身提供的功能进行操作。

示例 2. 获取驱动程序

.NET 驱动程序通过 NuGet 库分发。要查找驱动程序的最新版本,请访问 https://nuget.net.cn/packages/Neo4j.Driver/

依赖项

  • .NETStandard (^2.0)

  • System.Net.NameResolution (^4.3.0)

  • System.Net.Security (^4.3.2)

  • System.Net.Sockets (^4.3.0)

  • System.Runtime.InteropServices.RuntimeInformation (^4.3.0)

  • System.Runtime.Serialization.Primitives (^4.3.0)

  • System.Threading.Thread (^4.3.0)

  • System.ValueTuple (^4.5.0)

.NET 反应式 API 位于包 Neo4j.Driver.Reactive 中。它基于 System.Reactive。使用 .NET 反应式 API 不需要额外的依赖项。

示例 1. 通过 Install-package 安装

要在 Visual Studio 中使用 NuGet 安装驱动程序的最新版本

PM> Install-Package Neo4j.Driver

也可以选择安装特定版本的驱动程序。

PM> Install-Package Neo4j.Driver -Version $DOTNET_DRIVER_VERSION

.Net 驱动程序默认使用异步方法。如果您想使用阻塞调用,Neo4j.Driver.Simple NuGet 包包含一组扩展。可以在 https://nuget.net.cn/packages/Neo4j.Driver.Simple/ 找到它。初始示例使用了这些扩展。

在下面的示例中,我们安装了驱动程序版本 5.26。

PM> Install-Package Neo4j.Driver -Version 5.26

此驱动程序的发行说明可在 此处 获取。

"Hello World" 示例

以下示例显示了通过 .NET 驱动程序与 **Neo4j** 交互所需的最小配置

示例 3. Hello World
public class HelloWorldExample : IDisposable
{
    private readonly IDriver _driver;

    public HelloWorldExample(string uri, string user, string password)
    {
        _driver = GraphDatabase.Driver(uri, AuthTokens.Basic(user, password));
    }

    public void PrintGreeting(string message)
    {
        using var session = _driver.Session();
        var greeting = session.ExecuteWrite(
            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>();
            });

        Console.WriteLine(greeting);
    }

    public void Dispose()
    {
        _driver?.Dispose();
    }

    public static void Main()
    {
        using var greeter = new HelloWorldExample("bolt://localhost:7687", "neo4j", "password");

        greeter.PrintGreeting("hello, world");
    }
}

驱动程序 API 文档

有关所有驱动程序功能的完整列表,请参阅 .NET API 参考文档