如何使用 C# Neo4jClient 在两个节点之间创建关系

本文关键字:两个 节点 之间 关系 创建 何使用 Neo4jClient | 更新日期: 2023-09-27 18:35:34

我是 Neo4j 场景的新手,但是当尝试在播放列表和歌曲之间创建关系时,我收到以下 C# 错误:

An unhandled exception of type 'System.NullReferenceException' occurred in Neo4jClient.dll
Additional information: Object reference not set to an instance of an object.

C# 代码:

client.Cypher
    .Match("(song1:Song)", "(playlist1:Playlist)")
    .Where((Song song1) => song1.Name == newSong.Name)
    .AndWhere((Playlist playlist1) => playlist1.Name == newPlaylist.Name)
    .Create("(playlist1)-[r:CONTAINS_SONG]->(song1)")
    .ExecuteWithoutResults();

对象newSongnewPlaylist是用文件中的数据设定的,并且已经存在于 Neo4j 数据库中。使用实时调试器时,我看到newSong.Name等于"再见她眼",newPlaylist.Name等于"亚当国家"。这些值都存在于 Neo4j 数据库中(下图)。使用.Query.QueryText也会产生相同的错误。我正在使用neo4j-community-3.0.0-M03Neo4jClient 1.1.0.28.

我已经创建了自己的有效查询,但我觉得 C# 代码与正在输出的实际查询之间存在脱节。以下作品:

MATCH (song1:Song),(playlist1:Playlist)
WHERE song1.Name = 'Goodbye In Her Eyes' AND playlist1.Name = 'Adam Country'
CREATE (playlist1)-[r:CONTAINS_SONG]->(song1)

Neo4j 浏览器文本输出:

+==============================+
|n                             |
+==============================+
|FullName: Adam Country.txt    |
|Name: Adam Country            |
+------------------------------+
|Artist: Zac Brown Band        |
|FullName: Goodbye In Her Eyes |
|Name: Goodbye In Her Eyes     |
+------------------------------+

我的 C# 代码应该是什么样子才能实现这种关系?

[Playlist "Adam Country"] CONTAINS_SONG [Song "Goodbye In Her Eyes"]

如何使用 C# Neo4jClient 在两个节点之间创建关系

如果 newSong 和 newPlaylist 被初始化,最可能的解释是客户端没有初始化。您是否创建 GraphClient 的实例,然后调用 Connect?

var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();