0

这是对我之前的问题的一种扩展,我还没有收到任何回复,发布在这里

我想弄清楚如何创建如下图 在此处输入图像描述

但相反,我最终得到

在此处输入图像描述

问题是我看到的 MERGE 示例都是基于标签的,并且由于标签是通用的,它最终会在创建发货人 2 的仓库的同时创建发货人 2,因为它们具有相同的名称。我在上一篇文章中遇到的日期和月份类似的问题。

我在 Neo4JClient 中的代码看起来有点像这样(这里是手动输入的示例)

var qry = GraphClient.Cypher
                .Merge("(whse:Warehouse{ Name: {whseName}})")
                .OnCreate("whse").Set("whse= {newWhseData}")
                .With("whse")
                .Start(new { root = shipper2Node})
                .CreateUnique("(root)-[:HAS_WAREHOUSE]->(whse)")
                .WithParams(new { whseName = newWhse.Name, newWhseData= newWhse})
                .Return(whse => whse.Node<Warehouse>());
 var whseNode = qry.Results.Single();

我真的需要确保我不会为同一个托运人创建重复的仓库,因此在我的代码中使用 Merge,我知道 Merge and Match 正在取代 2.0 中的 Create Unique

我在这里为重新发布在这里道歉,但我不知道如何获得帮助。

在此先感谢,基兰

4

1 回答 1

0

MERGE您将对子图使用 create-unique,但您提出了一个很好的观点,即在演变为使用路径时我们应该考虑到这一点

就像是:

var qry = GraphClient.Cypher
            .Start(new { root = shipper2Node})
            .CreateUnique("(root)-[:HAS_WAREHOUSE]->(whse Name: {whseName})")
            .Set("whse= {newWhseData}")
            .WithParams(new { whseName = newWhse.Name, newWhseData= newWhse})
            .Return(whse => whse.Node<Warehouse>());
于 2013-11-03T16:11:36.373 回答