这是一个分为两个部分的问题。
这里有3个类,第一个类连接到GraphDB服务器并返回客户机变量,以便以后在其他类中使用。
public GraphClient GetConnection()
{
var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();
return client;
}然后是如下所示的New_Node类
class New_Node
{
public GraphClient Node { get; set; }
}然后是图操作类,它具有CreateNode方法
public GraphClient CreateNode()
{
Graph_Connection connection = new Graph_Connection();
var NewNode = connection.GetConnection();
var Created_Node = NewNode.Create(new New_Node());
return Created_Node;
}在Java中,可以做到这一点。
Node user1 = this.graphDb.createNode();
user1.setProperty("name", "Mike");发布于 2013-03-21 00:53:43
问题在于,您试图将DB连接持久化到节点本身内。
以下是节点数据结构的定义
class New_Node
{
public GraphClient Node { get; set; }
}这意味着您需要一个名为" node“的节点上的属性,该属性保存到包含该节点的DB的连接。舌头扭曲了吗?我的是。
根据您的Java比较,我认为您希望您的节点看起来像这样:
class New_Node
{
public string Name { get; set; }
}这表示您需要一个具有Name属性的节点,该属性是一个字符串。
然后,您可以这样创建它:
graphClient.Create(new New_Node { Name = "Mike" });关于您的子问题,“1.如何在另一行代码上设置Node的属性,而不是使用节点创建它们”,当您调用graphClient.Create时,我们将它持久化到DB。以后的任何属性更改都是对DB的更新,以及更多的调用。
当您的节点准备好被持久化时,只需调用create。
var node = new New_Node();
... think ...
node.Name = "Mike";
... think ...
graphClient.Create(node);基本上,每次您调用graphClient.Something时,我们都会访问DB。这是因为我们正在讨论一个无状态API。这与Java驱动程序不同,后者在内存中与DB对话(假设您谈论的是嵌入式Neo4j实例)。
HTH。
-塔瑟姆
https://stackoverflow.com/questions/15521930
复制相似问题