0

これは 2 つの部分からなる質問です

  1. 新しいノードを作成しようとすると、このエラーが発生します

    タイプ「Neo4jClient.NodeReference」を「Neo4jClient.GraphClient」に暗黙的に変換できません

ここには 3 つのクラスがあります。最初のクラスは GraphDB サーバーに接続し、後で他のクラスで使用するためにクライアント変数を返します。

public GraphClient GetConnection()
        {
            var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
            client.Connect();
            return client;
        }

次に、次のような New_Node クラスがあります

 class New_Node
    {
        public GraphClient Node { get; set; }
    }

次に、CreateNode メソッドを持つ Graph Operations クラスがあります。

public GraphClient CreateNode()
{
    Graph_Connection connection = new Graph_Connection();
    var NewNode = connection.GetConnection();
    var Created_Node = NewNode.Create(new New_Node());
    return Created_Node;
}
  1. ノードでプロパティを作成するのではなく、コードの別の行でノードのプロパティを設定するにはどうすればよいですか

    var refA = client.Create(new Person() { Name = "人物 A" });

Javaではこれを行うことができます

Node user1 = this.graphDb.createNode(); 
user1.setProperty("name", "Mike");
4

1 に答える 1

5

問題は、ノード自体の内部で DB 接続を永続化しようとしていることです。

ノードのデータ構造の定義は次のとおりです。

class New_Node
{
    public GraphClient Node { get; set; }
}

これは、ノードを含む DB への接続を保持する "Node" というノードのプロパティが必要であることを示しています。舌はまだねじれていますか?私のは。

Java の比較に基づいて、ノードを実際に次のように表示する必要があると思います。

class New_Node
{
    public string Name { get; set; }
}

これは、文字列である Name プロパティを持つノードが必要であることを示しています。

次に、次のように作成できます。

graphClient.Create(new New_Node { Name = "Mike" });

あなたのサブ質問に関連して、「1.ノードでノードを作成するのではなく、別のコード行でノードのプロパティを設定するにはどうすればよいですか」と呼ぶgraphClient.Createと、DBに永続化されます。それ以降のプロパティの変更は、DB への更新と追加の呼び出しです。

ノードを永続化する準備ができたら、 create を呼び出すだけです。

var node = new New_Node();
... think ...
node.Name = "Mike";
... think ...
graphClient.Create(node);

基本的に、あなたが呼び出すたびにgraphClient.Something、DB にヒットします。これは、ステートレス API を使用しているためです。これは、メモリ内の DB と通信している Java ドライバーとは異なります (組み込みの Neo4j インスタンスについて話していると仮定します)。

HTH。

-- タサム

于 2013-03-21T00:53:43.033 に答える