【问题标题】:Neo4jClient node idsNeo4jClient 节点 ID
【发布时间】:2015-11-01 13:13:23
【问题描述】:

我无法确定 ID 在 Neo4jClient 中的工作方式。我希望我的 .NET 模型具有标识符属性,理想情况下,我希望它只是为该节点使用 Neo4j 自动增量 ID。

但是,无论我在模型类中使用什么情况(idIDId),它总是将此作为另一个字段添加到 Neo4j 中(当我创建新节点时将其保持为 0) .因此,当我在 Neo4j 浏览器中查看该节点时,它有一个自动递增的 <id>,还有我的始终为 0 的 id 字段(除非我在 C# 的模型中手动设置它)。

我希望能够创建一个新的 .NET 模型类(它最初的未初始化 id 为 0),然后一旦我使用 Neo4j fluent Cypher 查询创建了它,它将具有新的 ID创建节点的自增 ID。

这里的例子: https://github.com/Readify/Neo4jClient/wiki/cypher-examples

显示他们的User 类具有这样的 ID:

public long Id { get; set; }

但在创建新用户的示例中...

var newUser = new User { Id = 456, Name = "Jim" };
graphClient.Cypher
    .Create("(user:User {newUser})")
    .WithParam("newUser", newUser)
    .ExecuteWithoutResults();

我不确定此示例中的 456 幻数来自何处,但我只想将其作为 Neo4j id,显然在创建之前我不知道。

【问题讨论】:

    标签: c# neo4j neo4jclient


    【解决方案1】:

    Alessandro 是正确的,您不应该使用节点 ID 肯定不是作为内部表示的映射。如果您要删除一个节点,然后创建另一个节点,它可能具有相同的 ID。

    现在,有时您需要获取 ID,(再次用作内部标识符) - 但可能在路径结果或其他东西中,而Neo4jClient 确实允许你得到它。

    小心,龙是这样撒谎的。

    Neo4jClient 是关于 POCO 的,它可以帮助您将它们与 Neo4j 相互转换,来自 WIKI 的示例就是这样,例如,ID 可能来自任意数量的来源,或者是任何类型,例如例如,我经常使用GUIDs 作为我的 ID。同样,我过去使用过SnowMaker 之类的东西来生成ID。如果您想要节点 ID,则需要将您的 POCO 包装在 Node<T> 类型中,因此:

    client.Cypher.Match("(n:User)").Return(n => n.As<User>()).Results;
    

    给你一个IEnumerable&lt;User&gt; 回复,而:

    client.Cypher.Match("(n:User)").Return(n => n.As<Node<User>>()).Results;
    

    得到一个IEnumerable&lt;Node&lt;User&gt;&gt; 响应,其中Node&lt;T&gt; 的每个实例都有一个属性-Reference 是Neo4j ID 和另一个-Data 这是T / POCO 位。

    【讨论】:

    • 谢谢。这是一个关于新节点与已删除节点具有相同 id 的好点。在内部,我很乐意使用 GUID,它只是看起来有点混乱,因为它最终会出现在 URI 上。请注意,Neo4j ID 出现在 uri 上也不理想!然后我会想到另一种引用特定节点的方法。这基本上适用于网站/应用程序上的“编辑”页面。
    • 如果它在 Azure 上,snowmaker 对于唯一 ID 非常有用且容易
    • 谢谢,会检查的。它位于 Azure 上,但包含在 Docker 容器中。
    【解决方案2】:

    使用 Neo4j 中的 id 是错误的做法,因为它可能会随着时间而改变或分配给不同的节点。 看看这个插件:

    https://github.com/graphaware/neo4j-uuid

    干杯,

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多