变量名称用于在neo4j中建立关系

时间:2014-07-23 13:47:04

标签: c# neo4j neo4jclient

在下面的代码片段中,我需要创建一个与变量内容的关系。

在代码片段中,sRelationName是一个变量,但正如预期的那样,创建的关系创建为":sRelationName"因为":"登录。

关于如何根据变量的内容创建关系的任何想法

client.Cypher
    .Match("(en1:Entity)", "(en2:Entity)")
    .Where((Entity en1) => en1.EntityName == sParentEntity)
    .AndWhere((Entity en2) => en2.EntityName == sChildEntity)
    .CreateUnique("en1-[:sRelationName]->en2")
    .ExecuteWithoutResults();

提前致谢..

1 个答案:

答案 0 :(得分:0)

Cypher不接受关系类型作为查询参数。这应该是Neo4jClient库提供的功能,但由于缺少它,您必须自己在逻辑代码中执行此操作。为此,您可以使用字符串连接或String.Format

.CreateUnique(String.Format("en1-[:{0}]->en2", sRelationName))

这当然是一个简单的例子,所以请记住,如果你的表达式中有Json括号,那么你必须将它们转义(参见this question)以便像这样使用String.Format

.CreateUnique(
    String.Format(
        "en1-[:{0} {{ category: {{category_name}} }}]->en2",
        sRelationName
    )
)

请记住不要将用户输入用作sRelationName变量的值。否则,如果你不逃避它,你就会有注射漏洞。