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オブジェクトには「name」プロパティしかなく、「age」プロパティがありません。私の質問は、Person クラスで定義されていないプロパティのプロパティ名とその値を取得するにはどうすればよいかということです。

すべてのプロパティの名前と値を取得することは可能ですか?

4

2 に答える 2

1

Person クラスで定義されていないプロパティを取得したいようです。クラスにないプロパティを返す方法があるとは思いません。Neo4jClient はノード情報をデシリアライズし、それを指定したオブジェクト タイプに入れます。簡単にするために、Neo4j の「Person」ノードに追加された新しいプロパティを反映するように 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 に答える