2016-10-07 89 views
0
public void AddRelationshipTest() 
    { 
     var conn = Neo4JConn.Connect(); 
     Team obj = new Team(); 
     int id1 = 1, id2 = 2; 
     NodeReference<Team> sTm = (NodeReference<Team>)ds.GetNodeReference<Team>(id1, conn, obj); 
     NodeReference<Team> dTm = (NodeReference<Team>)ds.GetNodeReference<Team>(id2, conn, obj); 

     ReportsToData data = new ReportsToData(); 
     data.SinceYear = 2008; 
     reportsTo relation = new reportsTo(dTm, data); 
     conn.CreateRelationship(sTm, relation); 



    } 

其中,Get NodeRefernce是一種返回節點引用並且工作正常的方法。團隊是具有數據成員和類節點的類 當我使用CreateRelationship時,它創建了一個關係 我主要關心的是即使源節點和目標節點之間已經存在關係,它也會創建關係。 我要創建在兩個節點之間的獨特關係就像如何使用C#使用Neo4jClient添加兩個節點之間的關係

graphClient.Cypher 
.Match("(user1:User)", "(user2:User)") 
.Where((User user1) => user1.Id == 123) 
.AndWhere((User user2) => user2.Id == 456) 
.CreateUnique("user1-[:FRIENDS_WITH]->user2") 
.ExecuteWithoutResults(); 

但這裏FRIENDS_WITH(任何關係),我不得不硬編碼,所以我不想使用它。

如何用Neo4jClient做到這一點?

+1

當你被禁止提出新的問題時,**不要**替代舊問題。閱讀[諮詢](http://meta.stackoverflow.com/q/255583/476)並按照它。 – deceze

回答

0

我不太確定問題出在哪裏,.CreateUnique爲什麼不使用string.Format或字符串插值不能硬編碼關係?

public void CreateRelationship(IGraphClient graphClient, string relationshipName) 
{ 
    graphClient.Cypher 
     .Match("(user1:User)", "(user2:User)") 
     .Where((User user1) => user1.Id == 123) 
     .AndWhere((User user2) => user2.Id == 456) 
     .CreateUnique($"(user1)-[:{relationshipName}]->(user2)") //<-- here 
     .ExecuteWithoutResults(); 
} 

明顯,可能是:

.CreateUnique(string.Format("(user1)-[:{0}]->(user2)", relationshipName))

,甚至只使用+如果你真的想:

.CreateUnique("(user1)-[:" + relationshipName + "]->(user2)")

應該絕對可以使用Cypher支架技術儘管如此,還有不是使用NodeReference<T>

相關問題