Neo4j C# Клиент, нулевые свойства - PullRequest
0 голосов
/ 08 января 2020

У меня странная проблема с клиентом neo4j c#, где работает первый запрос, указанный ниже, но проекция второго запроса приводит к нулевым свойствам. Есть идеи?

var query = WebApiConfig.GraphClient.Cypher
            .Match("(p:Phenotype)")
            .Return<PhenotypeSpeciesDTO>("p")
            .Results.ToList();

        var query = WebApiConfig.GraphClient.Cypher
            .Match("(p:Phenotype)")
            .Return((p) => new
            {
                phenotypeName = p.As<PhenotypeSpeciesDTO>(),
            })
            .Results.ToList();

1 Ответ

0 голосов
/ 09 января 2020

Я не вижу, в чем проблема - например, когда я запускаю следующее в LinqPad:

void Main()
{
    var client = new GraphClient(new Uri("http://localhost:7474/db/data"), "neo4j", "neo");
    //var client = new BoltGraphClient(new Uri("bolt://localhost:7687"), "neo4j", "neo");
    client.Connect();

    client.Cypher
                    .Match("(p:Phenotype)")
                    .Return<PhenotypeSpeciesDTO>("p")
                    .Results.ToList().Dump("Query 1");

    client.Cypher
        .Match("(p:Phenotype)")
        .Return((p) => new
        {
            phenotypeName = p.As<PhenotypeSpeciesDTO>(),
        })
        .Results.ToList().Dump("Query 2");
}


public class PhenotypeSpeciesDTO
{
    public string Name { get; set; }
    public int Id { get; set; }
}

все работает нормально. Единственное, что я могу заметить, это то, что запросы возвращают разные структуры, возможно ли это, что вы хотите сделать:

var query = WebApiConfig.GraphClient.Cypher
            .Match("(p:Phenotype)")
            .Return((p) => p.As<PhenotypeSpeciesDTO>())
            .Results.ToList();

, поскольку это дает тот же результат, что и:

.Return<PhenotypeSpeciesDTO>("p")
...