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