无法使用Label作为函数的字符串参数创建节点 - 在Neo4JClient中

时间:2014-12-26 13:09:21

标签: c# parameter-passing neo4jclient

我正在使用Neo4JClient来填充Neo4JDB中的节点。

我有一个函数被调用来创建节点并标记它们。 第一个参数是标签,第二个参数是节点属性

 function CreateConcpet( String sLabelString, String sDataSpaceName)
 {
     var newConcept = new Concept {DataSpace=sDataSpaceName};

     client.Cypher
         .Create("(concept:{labelstring} {ParamnewConcept})")
         .WithParam("ParamnewConcept",newConcept)
         .WithParam("labelstring",sLabelString)
         .ExecuteWithoutResults();
 }

这使用参数代替标签。

这不起作用。从各个帖子中,我了解WithParam不适用于标签。

如果可怕的ExecuteCypher是唯一的方法,有人可以帮我一个代码片段,它执行一个字符串作为查询。我找不到代码片段,而文档给出了调用,我无法找到创建查询对象并执行字符串查询的示例。

2 个答案:

答案 0 :(得分:0)

您无法参数化会影响已编译查询计划的内容。标签在查询计划中使用,因此没有参数。

这是参数在Neo4j中工作的一般限制,而不仅仅是Neo4jClient。

答案 1 :(得分:0)

我有同样的问题(经过多次糖化后)很容易解决......

我有两种类型的节点,Person和Union。这两行标记为

MATCH (n) where n.surname >' ' SET n :Person

MATCH (n) where n.surname is null SET n :Union

这取决于具有不同元数据的两种节点类型,以区分它们。