Neo4j 和参数化查询

Neo4j and parameterized queries

我正在考虑将 Neo4j 用于一个项目,但在最佳实践方面我有点困惑。我通常假设官方 C# 驱动程序提供了一种参数化查询的方法,但我在 official documentation 中看不到任何内容。

on Github 似乎有一个非官方的 C# 库,最近发布的版本仅几天前支持参数化查询。但是,我还记得看到一条评论说它主要支持 2.x 版本(尽管我找不到说明这一点的页面)。该库仅支持 http+https 作为连接方式,不支持 Bolt。这对性能有什么影响?

使用 C# 的 Neo4j 3.x 首选 driver/library 是什么?

Neo4jClient(社区驱动程序)在其当前状态下确实不支持 Bolt,有一个测试版预发布版本(您可以通过添加 https://www.myget.org/F/cskardon/api/v3/index.json 作为 Nuget 的源来使用 Nuget)-我对它 有理由 有信心,但它确实需要测试。

支持 Bolt。

官方驱动确实支持参数化查询,你只需要自己编写代码,当你调用session.Run时,你将它作为第二个参数传入。

类似于:

var obj = new Dictionary<string, object> { {"Name", "Chris"}, {"Email", "a@a.com"} }

var paramsObj = new Dictionary<string, object> { { "userParam", obj } };

session.Run("CREATE (n:User {userParam})", paramsObj);

Neo4j 支持官方驱动程序,社区在引擎盖下使用 bolt 的官方驱动程序,包装 OGM 的东西,所以从 Bolt 的角度来看,选择权在你。如果您需要使用 HTTP/HTTPS - 您必须使用 Neo4jClient(它也适用于 3.x 数据库)