在neo4j中用于构建关系的变量名



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

在代码片段中,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();

Thanks in advance.

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

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

这当然是一个简单的情况,所以请记住,如果你在表达式中有Json括号,那么你必须转义它们(见这个问题),以便像这样使用String.Format:

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

请记住不要使用用户输入作为sRelationName变量的值。否则,如果不进行转义,就会有注入漏洞。

最新更新