0

我是 neo4jclient 的新手,请考虑以下情况

节点:

name : Person A
age  : 25

班级:

public class Person
{
    public string name { get; set; }
}

使用以下查询

var persons = client
    .Cypher
    .Start("n", "node(*)")
    .Return<Node<Person>>("n")
    .Results
    .Select(un => un.Data);

上述查询成功执行,但在Person对象中我只有“名称”属性,没有“年龄”属性。我的问题是:对于未在 Person 类中定义的属性,如何获取属性名称及其值。

是否可以获得所有属性名称和值?

4

2 回答 2

1

在我看来,您想要获取未在您的 Person 类中定义的属性。我不相信有一种方法可以返回您的类中没有的属性。Neo4jClient 反序列化节点信息并将其放入您指定的对象类型中。为简单起见,我将更新您的 Person 类以反映添加到 Neo4j 中“Person”节点的任何新属性。

从节点获取所有属性名称和值需要对 Neo4jClient 进行一些修改并查询 Neo4j 的 REST API。

于 2013-01-26T19:11:07.090 回答
1

我同意@cameron-tinker,我认为没有办法直接从图形数据库中获取属性,不。

解决这个问题的最佳方法可能是创建一个类来简单地将节点的信息反序列化为,例如 PersonNode。

public class PersonNode
{
    public string Name { get; set; }
    public int Age { get; set; }
}

然后,也许你可以在你的 person 类中有一个构造函数,它接受一个 person 节点来填充它。

public Person(PersonNode node)
{
    this.name = node.Name;
}

然后您将调整您的密码查询以提取 PersonNodes,如下所示:

var persons = ((IRawGraphClient)client).ExecuteGetCypherResults<Node<PersonNode>>(
    new CypherQuery("start n=node(*) return n;", 
    null,CypherResultMode.Set)) .Select(un => un.Data);

不是一个完全原创的答案,我真的只是在扩展卡梅伦的答案。但我希望这可以帮助您解决问题。

于 2013-02-06T09:21:38.653 回答