Neo4jClient Создание и обновление отношений - PullRequest
4 голосов
/ 25 февраля 2012

У меня есть Neo4j Graphdatabase с доступом через Neo4jClient . (Это клиент .NET для REST API Neo4j)

Есть начало документации .

Что я сделал

Соединение с базой данных работает.

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

Таким образом, я могу вставить узлы ...

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

... и запросить их.

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

Что я хочу сделать

Я просто хочу добавить и обновить отношения между узлами. (Тип отношений должен быть числовым.)

К сожалению, документации об отношениях пока нет.

Существует команда с именем CreateRelationship. Но я не могу заставить его работать.

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

Можете ли вы привести пример добавления и обновления (числовых) отношений?

Ответы [ 3 ]

4 голосов
/ 02 марта 2012

В тестовых примерах есть что найти ... Например:

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

2 голосов
/ 26 апреля 2013

Я тоже застрял, тогда я понял, что мне нужно указать параметр типа ссылочного параметра исходного узла в методе CreateRelationship.

В этом примере я создал отношение.Я еще не обновил отношения.

Раскрытие информации (работает на моем компьютере как консольное приложение под управлением Visual Studio 2012, YMMV) * ​​1005 *

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; }
    }
}
1 голос
/ 27 февраля 2012

Вы можете посмотреть тесты, http://hg.readify.net/neo4jclient/src/4693da483a90/Test/RelationshipTests.cs или связаться с автором в списке рассылки Neo4j, groups.google.com/group/neo4j?

...