2017-06-06 76 views
1

我在找到使用Neo4j的一个项目,但我有点糊涂了,当涉及到的最佳实践。我通常会假定官方的C#驱动程序提供了一种参数化查询的方法,但我在official documentation中看不到任何内容。的Neo4j和参数化查询

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

什么是用C#的Neo4j 3.x的最佳驱动器/库?

回答

1

Neo4jClient(社区驱动程序)确实在它的当前状态不支持螺栓,有一个测试预发布版本(你可以开始使用的NuGet加入https://www.myget.org/F/cskardon/api/v3/index.json作为一个源到你的NuGet) - 我合理对此充满信心,但确实需要测试。

威尔支持博尔特虽然。

官方驱动不支持paramaterized查询,你就必须自己编写它,当你调用session.Run你通过它在作为第二个参数。

喜欢的东西:

var obj = new Dictionary<string, object> { {"Name", "Chris"}, {"Email", "[email protected]"} } 

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

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

官方驱动是Neo4j的支持,该社区使用官方驱动引擎盖螺栓下,结束了该OGM的东西,所以选择是你从螺栓点视图。如果您需要使用HTTP/HTTPS - 你必须使用Neo4jClient

+0

感谢您的输入(将与3.x的数据块以及工作)。 当您想通过动态属性查找节点时,类似的参数化查询的外观如何?例如。类似于'MATCH(a)WHERE a。 = RETURN a',其中属性名和值将在运行时确定? – bjelleklang

+0

没关系最后的评论,我在https://stackoverflow.com/questions/44422028/neo4j-cypher-match-on-dynamic-property创建一个单独的问题吧 – bjelleklang