0

我开始使用 neo4client API 研究 Neo4j 的使用。我已经创建了一个基本数据库,并且可以使用 Web 客户端对其进行查询。我现在正在尝试构建一个示例 C# 接口。我在索引查找方面遇到了一些问题。我的数据库由具有两个属性的节点组成:conceptID 和fullySpecifiedName。启用自动索引,两个节点属性都列在 neo4j.properties 的 node_keys_indexable 属性中。

使用 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,但我无法确定默认节点类型。

4

1 回答 1

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您可以通过 do.Return<MyType>("n")而不是在这种情况下Node<MyType>仅获得一个实例来绕过该步骤MyType

于 2013-10-14T15:29:36.977 回答