【发布时间】:2018-01-28 11:47:43
【问题描述】:
我正在努力将本地 Neo4j .Net 驱动程序的 INode 结果转换为我自己的对象。
public class User
{
public String UUID { get; set; }
public String firstname { get; set; }
}
我在 Neo4j 桌面浏览器中返回的节点:
{
"UUID": "e0bc991a-1018-4edb-83df-771b8cee4c88",
"firstname": "John"
}
使用 Neo4jClient 的 C# 代码(可行):
var users = client.Cypher
.Match("(p:Person)")
.Return(p => p.As<User>())
.Results.ToList();
使用原生 Neo4j .Net 驱动程序的 C# 代码(失败):
var users = new List<User>();
using (var session = _driver.Session())
{
session.ReadTransaction(tx =>
{
var result = tx.Run("MATCH (p:Person) RETURN p").ToList();
users = result.Select(p => p[0].As<User>()).ToList();
});
}
我的错误信息是:
System.InvalidCastException:无法将 Neo4j.Driver.Internal.Node 类型的对象转换为 sandbox_neotesting.Models.User 类型。
关于如何解决此问题的任何指示?我希望找到一种解决方案,可以直接将结果转换为我的内部模型,不必专门设置每个属性。
谢谢! :)
【问题讨论】: