2013-10-14 30 views
0

我开始调查使用neo4client API来使用Neo4j。 我已经创建了一个基本的数据库,并可以使用Web客户端查询它。我正在尝试构建一个示例C#接口。我在索引查找时遇到了一些问题。我的数据库由具有两个属性的节点组成:conceptID和fullySpecifiedName。自动索引已启用,并且两个节点属性都列在neo4j.properties的node_keys_indexable属性中。节点的默认节点类型<T>

当我使用Node类时,我一直在C#中收到IntelliSense错误。它似乎被定义为Node<T>,但我不知道该输入什么类型的值。从这个论坛看看这个例子...

var result = _graphClient 
.Cypher 
.Start(new 
{ 
    n = Node.ByIndexLookup("index_name", "key_name", "Key_value") 
}) 
.Return((n) => new 
{ 
    N = n.Node<Item>() 
}) 
.Results 
.Single(); 

var n = result.N; 

哪里“项目”,在Node<Item>从何而来? 我推断我应该使用的索引名称是node_auto_index,但我找不出默认的节点类型。

回答

1

Item是已存储在数据库节点的类型,所以如果你有你存储类:

public class MyType { public int conceptId { get; set; } public string fullySpecifiedName { get;set; } } 

你会被检索Node<MyType>回来。

简单的流程:

//Store a 'MyType' 
_graphClient.Create(new MyType{conceptId = 1, fullySpecifiedName = "Name"); 

//Query MyType by Index 
var query = 
    _graphClient.Cypher 
     .Start(new { n = Node.ByIndexLookup("node_auto_index", "conceptId", 1) 
     .Return<Node<MyType>>("n"); 

Node<MyType> result = query.Results.Single(); 

//Get the MyType instance 
MyType myType = result.Data; 

您可以绕过result.Data一步做.Return<MyType>("n"),而不是作为Node<MyType>你只是在这种情况下获得的MyType一个实例。

+0

谢谢克里斯。一旦有人向你指出这一点非常明显! –