2013-03-20 61 views
0

這是一個問題的兩個部分無法隱式轉換類型「Neo4jClient.NodeReference <>」到「Neo4jClient.GraphClient」

  1. 我得到這個錯誤,當我嘗試創建一個新的節點

    無法隱式轉換type'Neo4jClient.NodeReference」到‘Neo4jClient.GraphClient’

我有3個班在這裏 的第一次連接到服務器GraphDB並返回CLIEN在其他類

public GraphClient GetConnection() 
     { 
      var client = new GraphClient(new Uri("http://localhost:7474/db/data")); 
      client.Connect(); 
      return client; 
     } 

以後使用變量t再有就是New_Node類,看起來像這樣

class New_Node 
    { 
     public GraphClient Node { get; set; } 
    } 

然後是具有CreateNode方法

public GraphClient CreateNode() 
{ 
    Graph_Connection connection = new Graph_Connection(); 
    var NewNode = connection.GetConnection(); 
    var Created_Node = NewNode.Create(new New_Node()); 
    return Created_Node; 
} 
圖形操作類
  1. 如何在另一行代碼上設置節點的屬性,而不是使用節點創建它們,I w螞蟻,使我的應用程序更具活力,因爲這種方式似乎很硬編碼

    var refA = client.Create(new Person(){Name =「Person A」});

在Java中一個能做到這一點

Node user1 = this.graphDb.createNode(); 
user1.setProperty("name", "Mike"); 

回答

5

的問題是,你要堅持節點本身內部的數據庫連接。

這裏是你的節點的數據結構的定義:

class New_Node 
{ 
    public GraphClient Node { get; set; } 
} 

,說要叫「節點」保存到包含該節點的數據庫連接的節點上的性能。舌頭扭曲了嗎?我的是。

根據您的Java比較,我想你想你的節點實際上是這樣的:

class New_Node 
{ 
    public string Name { get; set; } 
} 

,說你想用一個名稱屬性,它是一個字符串的一個節點。

然後,您可以像這樣創建:

graphClient.Create(new New_Node { Name = "Mike" }); 

關於你的子問題,「1.how我設置節點的屬性上的另一行代碼,而不是與他們創造的節點「,當你打電話給graphClient.Create時,我們會堅持到數據庫。任何後來的屬性更改都是對數據庫的更新以及更多調用。

只需在節點準備好保持時調用create。

var node = new New_Node(); 
... think ... 
node.Name = "Mike"; 
... think ... 
graphClient.Create(node); 

基本上,每次你打電話給graphClient.Something,我們都打了DB。這是因爲我們正在審查無狀態API。這與在內存中與數據庫交談的Java驅動程序不同(假設您正在討論嵌入式Neo4j實例)。

HTH。

- Tatham

相關問題