在下面的代码片段中,我需要创建一个与变量内容的关系。
在代码片段中,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();
提前致谢..
答案 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
变量的值。否则,如果你不逃避它,你就会有注射漏洞。