neo4jClient 使用 List<Properties> 创建带有参数的节点

neo4jClien Create node with paramaters using a List<Properties>

我正在尝试创建一个节点,该节点采用属性列表并使用列表对象来创建这些属性。有什么办法吗?

public List<PropertiesModel> node_properties;

public class PropertiesModel{ 
    public string propertyName { get; set; }
    public string propertyValue { get; set; }
}

然后当我将其传递给:

client.Cypher
.Create("(n:Label {node})")
         .WithParam("node", node_properties)
                .ExecuteWithoutResults(); 

当我 运行 时出现以下错误:

CypherTypeException: 包含混合类型的集合不能存储在属性中。

我猜是因为这是一个列表,包含一个由它不喜欢的字符串组成的模型。还有另一种方法可以构建参数的动态模型吗?我考虑过 IDictionary,但似乎我可能无法直接从 JSON post 映射到 IDictionary。

谢谢

好的,所以我感觉很慢。刚刚回答了我自己的问题。

我有

class nodeModel{ 
List<PropertiesModel> props {get; set;}
}
class PropertiesModel{    
   public string propertyName { get; set; }
   public string propertyValue { get; set; }
}

所以我需要做:

client.Cypher
.Create("(n:Label {node})")
     .WithParam("node", node_properties.props)
            .ExecuteWithoutResults(); 

我不得不基本上用 .props 进入列表

但这并没有给我预期的结果。假设我的列表包含 2 个我打算附加到 1 个节点的属性。这实际上为每个 属性 创建了一个节点。为了解决这个问题,我将其映射到 IDictionary。

IDictionary<string, string> map = node_properties.props.ToDictionary(p=>p.propertyname, p=>p.propertyValue);

然后我将查询语句的 .WithParams 部分更改为:

.WithParams(map)

并且预期的结果是由属性列表组成的 1 个节点。