neo4jClien使用List <properties>创建带参数的节点

时间:2015-08-08 01:41:05

标签: list properties neo4j neo4jclient

我正在尝试创建一个获取属性列表的节点,并使用list对象创建这些属性。有没有办法做到这一点?

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帖子映射到IDictionary。

由于

1 个答案:

答案 0 :(得分:0)

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

我有

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个节点由属性列表组成。