在下面的代码片段中,我需要与变量的内容创建一个关系。
在代码片段中,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
变量的值。否则,如果不进行转义,就会有注入漏洞。