【问题标题】:Neo4J C# How to receive different type of Nodes and use themNeo4J C# 如何接收不同类型的节点并使用它们
【发布时间】:2018-03-14 08:26:41
【问题描述】:

比如说我有 3 种类型的节点 TypeA TypeB TypeC 并且所有类型都继承自 Parent 类型,其中包括我的节点基本信息, 例如,我有这个查询:

var graphResult = graphClient.Cypher
    .Unwind(Nodes, "singleNode")
    .Match("p = (innerNode:TypeA{Id:singleNode.Id}) -[r:CONTAINS {solutionId:{innerSolutionId}}] - ()")
            .WithParam("innerSolutionId", solutionId)
            .Return(p => new
                   {
                      Nodes = Neo4jClient.Cypher.Return.As<IEnumerable<Neo4JNodeDSO>>("nodes(p)"),
                      Relationships = Neo4jClient.Cypher.Return.As<IEnumerable<Neo4JLinkDSO>>("rels(p)")
                   }).Results;

我返回的节点来自 Parent 类型并且不包含 children 类型的所有数据,有没有办法定义一些当我收到数据时我还将拥有属于 TypeA/TypeB 的属性/TypeC?那不在父对象中? (一种接收每个节点的全部数据而不只是将其反序列化为父类型的方法?)

非常感谢。

【问题讨论】:

    标签: c# neo4j neo4jclient


    【解决方案1】:

    不像特定的type - 你可以得到它dynamic 但从长远来看你仍然需要知道类型,这个答案:Returning multi value in dynamic query using neo4j client 可能会有所帮助,因为你可以将它作为动态 - (请参阅最后的“代码部分”)。

    【讨论】:

    • 最终我决定对每个节点类型进行查询,我不知道它是否如此不正确,但我只是认为无论如何我都必须进行所有转换,如果我的图表有 1k 个节点,我会发现自己试图组织太多节点并了解哪个节点来自哪个类型。无论如何谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2022-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多