私はいくつかのデータをneo4jノードとして保存しています。このノードには、関連するC#クラスで記述されていないプロパティがいくつか存在するため、neo4jclientクエリが返されたときに自動的にクラスに戻されることはありません。neo4jclientを使用して特定のneo4jノードプロパティを取得するにはどうすればよいですか?
例として、このC#クラス:のNeo4jに格納されている
public class Node {
public string name;
public int number;
public CustomClass data;
}
、次neo4jclient流暢コードで取得:
var query = client.Cypher
.Match("(n:Node)")
.Return(n => n.As<Node>())
.Results;
は、名前と番号を持つノード・オブジェクトを移入しますが、 CustomClassオブジェクトへの参照をnullのままにします。
この問題を解決するために、CustomClassをJSON文字列としてシリアル化し、文字列プロパティとしてneo4jに格納しました。このJSONクラスを逆シリアル化するには、neo4jに格納されているノードからJSON文字列プロパティを取得する必要があります。
neo4jclientマニュアルは、次をお勧めします。
.Return(() => new {
JSONString = Return.As<string>("matchedNode.JSONProperties")
})
ただし、これは無効なコードです。 JSONString =
の後のReturn
はそのコンテキストに存在しません。
回答を参照してください。
データベースからJSONPropeties文字列を取得するにはどうすればよいですか?
クラスがで指定されている場合にのみ動作します.As <>コールには、neo4jノードフィールドと一致するフィールドがあります。 (あなたの例の "name"では)しかし、私の問題は、 "このノードには関連するC#クラスで記述されていないプロパティがいくつかある"ということでしたので、この答えは当てはまりません。 – slbelden
私は 'Node'を使い、 'dynamic'オブジェクトにキャストします –