2014-07-23 26 views
0

在下面的代码片段中,我需要创建与变量内容的关系。用于在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(); 

由于内容的创建关系的任何想法..

回答

0

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

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

当然,这是一个简单的例子,所以记住,如果你有Json的括号在你的表达,那么你必须要使用转义(见this questionString.Format这样的:

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

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

+0

非常感谢!那工作。当然,我不会使用用户输入的变量。它更多的是描述基于应用程序元数据的多个关系。 – cheenu