2013-05-26 168 views
0

我正在使用Neo4jClient編寫演示。我的演示有兩個節點:啤酒BeerBrand和一個關係Is_Made具有propertise ReleaseDay。我編寫了這個代碼,以獲得製造特定啤酒的節點BeerBrandNeo4j如何返回節點和關係?

var isMadeBy = beer 
       .StartCypher("b") 
       .Match("b-[r:IS_MADE]->e") 
       .Return<Node<BeerBrand>>("e")     
       .Results.ToList(); 

現在,我想獲得關係* Is_Made *

var isMadeBy = beer 
       .StartCypher("b") 
       .Match("b-[r:IS_MADE]->e") 
       .Return<Relationship<IsMade>>("r") 
       .Results.ToList(); 

但是,引發錯誤,那

class IsMade must be non-abstract type with a public parameterless constructor 
in order to use it as parameters 'TData' in the generic type or 
method 'Neo4jClient.Relationship<TData>' 

你能幫我解決這個問題?

+0

您使用的是什麼版本的Neo4J? –

回答

0

您有沒有看過維基? http://hg.readify.net/neo4jclient/wiki/cypher

如果您不需要關係ID,然後給一個嘗試:

var isMadeBy = beer 
    .StartCypher("b") 
    .Match("b-[r:IS_MADE]->e") 
    .Return((r, e) => new { 
      isMadeRelationship = r.As<Node<SomeObjectWithAPublicConstructor>>() 
      beerBrand = e.As<Node<BeerBrand>>() 
     }) 
     .Results.ToList(); 
+0

我應用了你的代碼,但是它引發了一個錯誤:[MissingMethodException:沒有爲這個對象定義的無參數構造函數。] – gaupoit

+0

它很接近你需要有一個公共構造函數的對象。爲什麼downvote? – Pierrick

0

有一個答案,類似的問題在這裏:Neo4jClient - Retrieving relationship from Cypher query它會給你,你應該遵循的指導。

本質上,您需要爲您的關係添加無參構造函數,以允許客戶端(特別是JSON.NET)能夠將您的關係從數據庫中的內容反序列化到代碼中。基本上--JSON.NET無法弄清楚如何構建你的關係,因爲它不知道你的構造函數中的參數是什麼。

您可能還需要從返回「關係」更改爲「RelationshipInstance」。