Neo4j + bolt + c#;如何通过将地图作为参数传递,通过一个查询创建多个节点

时间:2016-09-21 10:53:25

标签: c# parameters neo4j

任何人都可以建议我应该如何更改我的代码(这是基于3.0开发人员手册中的3.5.1.4.2节)。我试图通过bolt中的一个查询创建多个节点。

using (var driver = GraphDatabase.Driver(Neo4jCredentials.Instance, AuthTokens.Basic(Neo4jCredentials.Username, Neo4jCredentials.Password))) 

using (var session = driver.Session())
{
string query = "UNWIND { props } AS map CREATE(n) SET n = map";
                Dictionary<string, object> myParameter = new Dictionary<string, object>();
                myParameter.Add("props", "{\"props\":[{\"name\":\"Andres\",\"position\":\"Developer\"},{\"name\":\"Michael\",\"position\":\"Developer\"}]}");
                return session.Run(query, myParameter);
            }

我得到的错误是:

{"Expected map to be a map, but it was :`{\"props\":[{\"name\":\"Andres\",\"position\":\"Developer\"},{\"name\":\"Michael\",\"position\":\"Developer\"}]}`"}

先谢谢我们学到的朋友......

1 个答案:

答案 0 :(得分:2)

尝试使用一系列词典来形成params词典:

    Dictionary<string, object> myParameter = new Dictionary<string, object>();
    Dictionary<string, object>[] props =
    {
        new Dictionary<string, object> {{"name", "Andres"}, {"position", "Developer"}},
        new Dictionary<string, object> {{"name", "Michael"}, {"position", "Developer"}}
    };
    myParameter.Add("props",props);

或少几个字符:

var myParameter = new Dictionary<string, object>
{
    {
        "props", new[]
        {
            new Dictionary<string, string> {{"name", "Andres"}, {"position", "Developer"}},
            new Dictionary<string, string> {{"name", "Michael"}, {"position", "Developer"}}
        }
    }
};