我正在尝试创建一个获取属性列表的节点,并使用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。
由于
答案 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个节点由属性列表组成。