我使用Neo4jClient来使用Neo4j,我使用cypher代码为CRUD实体,遵循代码:
_graphClient.Cypher.Merge("(n:Movie { Id:101 })")
.Set("n.Key = 55,n.DateTime='" +DateTime.UtcNow.ToString()+"'").ExecuteWithoutResults();
_graphClient.Cypher
.Match("(n:Movie)-[r:RelName]-(m:Movie)")
.Where((EntityNode n) => n.Id == 20)
.Return.......
public class EntityNode
{
public int Id { get; set; }
public string Key { get; set; }
public DateTime DateTime { get; set; }
}
错误:Neo4j返回了有效的响应,但是Neo4jClient无法反序列化为您提供的对象结构。无法反序列化 DateTime 。
另一方面,我以不同的方式使用jsonconvertor ,例如:
_graphClient.Cypher.Merge("(n:Movie { Id:101 })")
.Set("n.Key = 55,n.DateTime=" +JsonConvert.SerializeObject(DateTime.UtcNow)).ExecuteWithoutResults();
我仍然有错误
答案 0 :(得分:1)
将其作为正确的参数传递:
graphClient.Cypher
.Merge("(n:Movie { Id:101 })")
.Set("n.Key = {key}, n.DateTime = {time}")
.WithParams(new {
key = 55,
time = DateTimeOffset.UtcNow
})
.ExecuteWithoutResults();
这样,Neo4jClient将为您进行序列化,并且不会引入大量安全性和性能问题。
这是在doco:https://github.com/Readify/Neo4jClient/wiki/cypher#parameters
答案 1 :(得分:0)
我最近遇到了同样的问题,因为日期时间值来自neo。
我已将日期时间存储在neo中作为纪元时间,但在检索时我在课堂上使用了很长时间。因为这给了我上面的错误。
尝试使用字符串表示上述日期时间。
希望这会对你有所帮助。