Question

j'ai un Base de données graphique Neo4j avec accès via le Neo4jClient.(C'est un client .NET pour l'API REST de Neo4j)

Il y a le début d'un Documentation.

Ce que j'ai fait

La connexion à la base de données fonctionne.

Client = new GraphClient(new Uri("http://localhost:7474/db/data"));
Client.Connect();

De cette façon, je peux insérer des nœuds...

Client.Create(new myNodeClass { name = "Nobody" });

...et interrogez-les.

Node<myNodeClass> Node = Client.Get<WordNode>(138);
return Node.Data.name;

Ce que je veux faire

Je souhaite simplement ajouter et mettre à jour les relations entre les nœuds.(Le type de relation doit être numérique.)

Malheureusement, il n'existe pas encore de documentation sur les relations.

Il existe une commande nommée CreateRelationship.Mais je n'arrive pas à le faire fonctionner.

Client.CreateRelationship(Neo4jClient.NodeReference<TSourceNode>, TRelationship);

Pouvez-vous me donner un exemple d'ajout et de mise à jour de relations (numériques) ?

Était-ce utile?

La solution

tu pourrais jeter un oeil aux tests, http://hg.readify.net/neo4jclient/src/4693da483a90/Test/RelationshipTests.cs ou contactez l'auteur sur la liste de diffusion Neo4j, groups.google.com/group/neo4j ?

Autres conseils

Il y a beaucoup à trouver dans les cas de test...Tel que cela:

http://hg.readify.net/neo4jclient/src/4693da483a90/Test/ApiUsageIdeas.cs

J'étais également bloqué, puis j'ai réalisé que je devais spécifier le paramètre de type du paramètre de référence du nœud source dans la méthode CreateRelationship.

Dans cet exemple, j'ai créé la relation.Je n'ai pas encore mis à jour la relation.

Divulgation (Cela fonctionne sur ma machine en tant qu'application console exécutant Visual Studio 2012, YMMV)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using Neo4jClient;

namespace Neo4jClientExample
{

    class MyConsoleProgram
    {

        private GraphClient Client {get;set; }

        static void Main(string[] args)
        {

        try{
            GraphClient client = new GraphClient(new Uri("http://localhost:7474/db/data"));
            client.Connect();

            Us us = new Us { Name = "We are Us" };
            NodeReference<Us> usRef = client.Create(us);
            Console.WriteLine("us node.id: {0}", usRef.Id);

            var queryUs = client.Cypher.Start("n", "node(" + usRef.Id + ")").Return<Node<Us>>("n");
            Console.WriteLine("Us node name: {0}\n", queryUs.Results.AsEnumerable<Node<Us>>().First().Data);


            AllYourBase allYourBase = new AllYourBase { Name = "We are all your base" };
            NodeReference<AllYourBase> allYourBaseRef = client.Create(allYourBase);
            Console.WriteLine("AllYourBase node.id: {0}",allYourBaseRef.Id);

            var queryAllYourBase = client.Cypher.Start("n", "node(" + allYourBaseRef.Id + ")").Return<Node<AllYourBase>>("n");
            Console.WriteLine("AllYourBase node name: {0}\n", queryAllYourBase.Results.AsEnumerable<Node<AllYourBase>>().First().Data);

            RelationshipReference areBelongToRef = client.CreateRelationship(allYourBaseRef, new AreBelongTo(usRef));

            var query = client.Cypher.Start("allyourbase", "node(" + allYourBaseRef.Id + ")").Match("allyourbase-[:ARE_BELONG_TO]->us").Return<Node<AllYourBase>>("allyourbase");
            query.ExecuteWithoutResults();
            Console.WriteLine("Result of querying for all your base that belongs to us: {0}", query.Results.AsEnumerable<Node<AllYourBase>>().First().Data.Name);
        }
        catch(Exception ex)
        {
            Console.WriteLine("{0}", ex.Message);
            Console.WriteLine("{0}", ex.InnerException);
        }
        Console.ReadKey();
    }
}

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

    public Us()
    {
    }
}

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

    public AllYourBase()
    {
    }
}
public class AreBelongTo : Relationship, IRelationshipAllowingSourceNode<AllYourBase>,
                                         IRelationshipAllowingTargetNode<Us>
{
    public AreBelongTo(NodeReference targetNode)
        : base(targetNode)
    {}

    public const string TypeKey = "ARE_BELONG_TO";

    public override string RelationshipTypeKey
    {
        get { return TypeKey; }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top