gpt4 book ai didi

c# - 在 C# 中使用 Neo4jClient 在 Neo4j 中创建节点之间的关系

转载 作者:太空狗 更新时间:2023-10-29 23:08:58 36 4
gpt4 key购买 nike

我正在使用 .Net Neo4jClient ( http://hg.readify.net/neo4jclient/wiki/Home ) 处理 Neo4j。在我的代码中,节点是机场,关系是航类。

如果我想同时创建节点和关系,我可以用下面的代码来完成:

public class Airport
{
public string iata { get; set; }
public string name { get; set; }
}

public class flys_toRelationship : Relationship, IRelationshipAllowingSourceNode<Airport>, IRelationshipAllowingTargetNode<Airport>
{
public static readonly string TypeKey = "flys_to";

// Assign Flight Properties
public string flightNumber { get; set; }

public flys_toRelationship(NodeReference targetNode)
: base(targetNode)
{ }

public override string RelationshipTypeKey
{
get { return TypeKey; }
}
}

主要

// Create a New Graph Object
var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();

// Create New Nodes
var lax = client.Create(new Airport() { iata = "lax", name = "Los Angeles International Airport" });
var jfk = client.Create(new Airport() { iata = "jfk", name = "John F. Kennedy International Airport" });
var sfo = client.Create(new Airport() { iata = "sfo", name = "San Francisco International Airport" });

// Create New Relationships
client.CreateRelationship(lax, new flys_toRelationship(jfk) { flightNumber = "1" });
client.CreateRelationship(lax, new flys_toRelationship(sfo) { flightNumber = "2" });
client.CreateRelationship(sfo, new flys_toRelationship(jfk) { flightNumber = "3" });

然而,问题是当我想将关系添加到现有节点时。假设我有一个只包含两个节点(机场)的图表,比如 SNA 和 EWR,我想添加一个从 SNA 到 EWR 的关系(航类)。我尝试了以下但失败了:

// Create a New Graph Object
var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();

Node<Airport> departure = client.QueryIndex<Airport>("node_auto_index", IndexFor.Node, "iata:sna").First();
Node<Airport> arrival = client.QueryIndex<Airport>("node_auto_index", IndexFor.Node, "iata:ewr").First();
//Response.Write(departure.Data.iata); <-- this works fine, btw: it prints "sna"

// Create New Relationships
client.CreateRelationship(departure, new flys_toRelationship(arrival) { flightNumber = "4" });

我收到的两个错误如下:

1) 参数 1:无法从“Neo4jClient.Node”转换为“Neo4jClient.NodeReference”

2) 无法从用法中推断出方法“Neo4jClient.GraphClient.CreateRelationship(Neo4jClient.NodeReference, TRelationship)”的类型参数。尝试明确指定类型参数。

错误所指的方法在以下类中:http://hg.readify.net/neo4jclient/src/2c5446c17a65d6e5accd420a2dff0089799cbe16/Neo4jClient/GraphClient.cs?at=default

有什么想法吗?

最佳答案

在你的CreateRelationship调用你将需要使用节点引用,而不是节点,所以:

client.CreateRelationship(departure.Reference, new flys_toRelationship(arrival.Reference) { flightNumber = "4" });

您的初始创建代码有效而这个无效的原因是因为 Create返回一个 NodeReference<Airport> (var 为您隐藏),QueryIndex返回 Node<Airport>实例代替。

Neo4jClient 主要使用 NodeReference的大部分业务。

您遇到的第二个错误与未使用 .Reference 有关属性,因为它无法确定类型,当您使用 .Reference错误也会消失的属性。

关于c# - 在 C# 中使用 Neo4jClient 在 Neo4j 中创建节点之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14269967/

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