gpt4 book ai didi

c# - 使用 Neo4j .Net 驱动程序的结果

转载 作者:行者123 更新时间:2023-12-05 09:17:19 27 4
gpt4 key购买 nike

我正在努力将 native 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();

使用 native 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

关于如何解决这个问题的任何指示?我希望找到一个可以直接将结果转换为内部模型的解决方案,不必专门设置每个属性

谢谢! :)

最佳答案

这里非常安静,但找到了一个可行的解决方案。我只是序列化节点的属性,然后反序列化为一个 User 对象。欢迎提出改进建议!

var statementText = "MATCH (p:Person) RETURN p";

var users = new List<User>();
using (var session = _driver.Session())
{
session.ReadTransaction(tx =>
{
var result = tx.Run(statementText);
foreach(var record in result)
{
var nodeProps = JsonConvert.SerializeObject(record[0].As<INode>().Properties);
users.Add(JsonConvert.DeserializeObject<User>(nodeProps));
}
});
}

关于c# - 使用 Neo4j .Net 驱动程序的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48485999/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com