无法使用C#client

时间:2015-10-29 19:38:01

标签: c# datetime neo4j deserialization neo4jclient

我正在尝试使用C#客户端从Neo4j中获取强类型对象。这一切都有效,直到我添加DateTime属性。

我已成功将数据插入Neo4j数据库,我可以使用控制台查看它。我也可以查询数据,但是我不能返回任何强类型对象,因为反序列化似乎失败了。

我正在使用参数来插入数据:

_graphClient.Cypher
.WithParams(new
{
    id = node.Id,
    createdAt = node.CreatedAt,
    lastModified = node.LastModified              
})
.Create("(c { " +
    "Id: {id}, " +
    "CreatedAt: {createdAt}, " +
    "LastModified: {lastModified} } )")

我获取数据的查询非常基本:

nodes = _graphClient.Cypher
.Match("(n)")
.Return((n) => n.As<NeoObject>()).Results.ToList();

然后我收到错误...

日志文件说明如下:

  

参数名称:内容---&gt; Newtonsoft.Json.JsonReaderException:无法将字符串转换为DateTime:17-9-2015 21:57:14 +00:00。路径'a',第1行,第32位。

数据看起来像这样(从日志中输入):

"data" : {
  "Id" : 31,
  "LastModified" : "2015-09-17T21:57:14Z",
  "CreatedAt" : "2015-09-17T21:57:14Z",
}

我的c#类型定义:

public class NeoObject
{
    public int Id { get; set; }
    public DateTime CreatedAt { get; set; }
    public DateTime LastModified { get; set; }
}

public class NeoObject2
{
    public int Id { get; set; }
    public DateTime? CreatedAt { get; set; }
    public DateTime? LastModified { get; set; }
}

1 个答案:

答案 0 :(得分:3)

如果我没记错,您需要使用DateTimeOffset类型作为您的属性。

public class NeoObject
{
    public int Id { get; set; }
    public DateTimeOffset CreatedAt { get; set; }
    public DateTimeOffset LastModified { get; set; }
}

修改 这曾经是这种情况,但似乎最近的更新增加了对DateTime对象类型的支持。您使用的是什么版本的Neo4jClient?你试过DateTimeOffset吗?