neo4client Merge并不总是有效

时间:2018-04-28 10:26:37

标签: asp.net neo4j

List<string> names = new List<string>() { "Alice", "Bob", "Sara", "Maria"}; 
        foreach (string n in names)
        {
            db.Cypher
           .Merge("(a:New)")
           .Set("a.Name = $n")
           .WithParam("n", n)
           .ExecuteWithoutResults();
        }

仅创建一个顶点而不是四个(不一定是列表的第一个元素)。 Parallel.Foreach和单个方法调用的问题相同。 在本地和远程数据库上。 VS 2017预览核心2.1&amp; VS 2017核心2.0

1 个答案:

答案 0 :(得分:2)

您应该将代码更改为:

List<string> names = new List<string>() { "Alice", "Bob", "Sara", "Maria"}; 
        foreach (string n in names)
        {
            db.Cypher
           .Merge("(a:New {Name:$n})")
           .WithParam("n", n)
           .ExecuteWithoutResults();
        }

在这种情况下,您要求Neo4j创建(或不创建)标签为New并且属性Name等于$n的节点。

在您的情况下,您只是要求创建(或不创建)标签为New的节点,然后将其属性Name创建为$n。 因此,在这种情况下,只有一个节点是正常的。