SuperAPI AI 工具集

neo4j-driver-dotnet-skill

编程与开发

查看项目

更新于 10-16 01:35

技能介绍

用途:面向使用 C#/.NET 连接 Neo4j 的场景,指导 IDriver 生命周期、依赖注入注册、会话与事务管理,以及 ExecutableQuery、IResultCursor、异步模式、结果映射、类型映射、空值安全与错误处理。不适用于编写或优化 Cypher 查询(对应 neo4j-cypher-skill)以及从旧驱动版本升级(对应 neo4j-migration-skill)。

安装:dotnet add package Neo4j.Driver。包选择:Neo4j.Driver 为异步 API(推荐),Neo4j.Driver.Simple 为同步封装,Neo4j.Driver.Reactive 提供 System.Reactive 流。

主要能力与用法:IDriver 线程安全、带连接池、创建开销大,每个应用创建一个;IDriver 与 IAsyncSession 实现 IAsyncDisposable,须用 await using。连接配置从环境变量或 appsettings.json 读取,不要硬编码凭据。ASP.NET Core 中将 IDriver 注册为 Singleton,绝不注册 IAsyncSession。简单查询用 driver.ExecutableQuery()(自动重试、急切加载);大结果集或多查询事务用 session.ExecuteReadAsync/ExecuteWriteAsync(自动重试、流式);LOAD CSV 或 CALL {} IN TRANSACTIONS 用 session.RunAsync();需外部协调的多函数事务用 BeginTransactionAsync()。游标须在托管事务回调内消费(ToListAsync 或 FetchAsync 循环),不可从回调返回。始终用 WithParameters() 传参,禁止字符串拼接 Cypher。批量写入用 UNWIND 配合匿名类型。对象映射为预览 API,需 using Neo4j.Driver.Preview.Mapping。

限制与注意:ExecuteAsync() 必须 await;托管事务回调可能被重试,须保持幂等且无副作用;空图值用可空类型(string?、int?);捕获异常时先 ClientException 再 Neo4jException;ElementId 仅在同一事务内稳定;Duration.ToTimeSpan() 在含月/日时抛异常;ResultAvailableAfter 仅为首字节时间,总耗时用 ResultConsumedAfter。其余细节暂未提供。