Neo4j Cypher Client Создание динамических объектов - PullRequest
0 голосов
/ 29 мая 2019

На данный момент мне нужно указать, какой класс нужен при возврате, есть ли способ получить все свойства и создать динамический / анонимный объект.

public IEnumerable<Node> GetNodes()
    {
        Console.WriteLine($"Retrieving All Nodes from DB...");
        try
        {
            return graphClient.Cypher
               .Match($"(n:Node)")
               .Return(t => new Node
               {
                   Latitude = Return.As<double>("n.lat"),
                   Longitude = Return.As<double>("n.lon"),
                   Id = Return.As<string>("n.id"),
                   ValA = Return.As<long>("n.valA")
               }).Results;
        }
        catch (Exception ex)
        {
            string error = $"ERROR (Get Node): {ex.ToString()}";
            Console.WriteLine(error);
        }

        return null;
    }

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Попробуйте с Neo4J official C# driver и JSON.NET как:

public static void Main()
{
    string neo4jHostname = string.Empty, neo4jUsername = string.Empty, neo4jPassword = string.Empty;
    IDriver driver = GraphDatabase.Driver(neo4jHostname, AuthTokens.Basic(neo4jUsername, neo4jPassword));

    using (ISession session = driver.Session())
    {
        string query = "MATCH (n) RETURN n";
        IStatementResult resultCursor = session.Run(query);
        List<IRecord> res = resultCursor.ToList();
        string values = JsonConvert.SerializeObject(res.Select(x => x.Values), Formatting.Indented);
        List<JObject> nodes = JsonConvert.DeserializeObject<List<JObject>>(values);
    }
}
1 голос
/ 30 мая 2019

Вы можете использовать решение, которое я написал для этого вопроса: Neo4jClient Как я могу вернуть все узлы, отношения и параметры для динамического графа

Я бы поспорил - если это то, что выочень хочется сделать - вам лучше использовать официальный драйвер (Neo4j-Driver) или просто использовать стандартный REST-клиент и подключиться напрямую - однако - ответ выше должен привести вас туда, куда вы хотите!

...