Where/when 是在 Neo4j IDriver 上调用 Dispose() 的地方吗?
Where/when is the place to call Dispose() on a Neo4j IDriver?
我正在从 c# 服务创建节点和关系,但我不确定调用 dispose 的理想时间是什么时候。我有三种创建 Neo4j 节点的方法和两种创建关系的方法。这些一个接一个地调用。每种方法都会创建一个新的驱动程序。 (最好不要在每个方法中创建新的驱动程序?)
createNodes1();
createNodes2();
createNodes3();
createRelationships1();
createRelationships2();
每个方法大体上类似于下面的代码摘录。
internal void addNode(string nodeName, string nodeLabel)
{
IDriver driver = GraphDatabase.Driver("bolt://localhost:11004", AuthTokens.Basic("neo4j", "Diego123"));
using (ISession session = driver.Session())
{
IStatementResult result = session.Run("CREATE (n:" + nodeLabel + "{name:'" + nodeName + "'})");
}
driver.Dispose();
}
(在每个方法的末尾调用 Dispose() 都会出错,所以我不想把它放在那里。我只是展示我最初拥有的东西,并就放置它的最佳位置寻求建议是。)
任何实现 IDisposable
的对象都可以用 using
语句实例化,并且在该块的末尾,该对象将被释放(您已经使用 session
), 因此无需显式调用它。
有关详细信息,请参阅 Using objects that implement IDisposable。
using (IDriver driver = GraphDatabase.Driver("bolt://localhost:11004",
AuthTokens.Basic("neo4j", "Diego123")))
{
using (ISession session = driver.Session())
{
IStatementResult result = session.Run("CREATE (n:" + nodeLabel +
"{name:'" + nodeName + "'})");
}
}
考虑创建连接(驱动程序)并将其作为依赖项传递到包含数据操作方法(创建节点、创建关系等)的 class。
如果这里的所有内容都在一个 class 中,您可以使 class IDisposable 并在其构造函数中创建驱动程序,并调用驱动程序 Dispose 方法作为 [=16= 的一部分]es Dispose 方法。
完成所有在 Neo4J DB 上为给定服务请求所做的工作后,您可以释放驱动程序和连接。
我正在从 c# 服务创建节点和关系,但我不确定调用 dispose 的理想时间是什么时候。我有三种创建 Neo4j 节点的方法和两种创建关系的方法。这些一个接一个地调用。每种方法都会创建一个新的驱动程序。 (最好不要在每个方法中创建新的驱动程序?)
createNodes1();
createNodes2();
createNodes3();
createRelationships1();
createRelationships2();
每个方法大体上类似于下面的代码摘录。
internal void addNode(string nodeName, string nodeLabel)
{
IDriver driver = GraphDatabase.Driver("bolt://localhost:11004", AuthTokens.Basic("neo4j", "Diego123"));
using (ISession session = driver.Session())
{
IStatementResult result = session.Run("CREATE (n:" + nodeLabel + "{name:'" + nodeName + "'})");
}
driver.Dispose();
}
(在每个方法的末尾调用 Dispose() 都会出错,所以我不想把它放在那里。我只是展示我最初拥有的东西,并就放置它的最佳位置寻求建议是。)
任何实现 IDisposable
的对象都可以用 using
语句实例化,并且在该块的末尾,该对象将被释放(您已经使用 session
), 因此无需显式调用它。
有关详细信息,请参阅 Using objects that implement IDisposable。
using (IDriver driver = GraphDatabase.Driver("bolt://localhost:11004",
AuthTokens.Basic("neo4j", "Diego123")))
{
using (ISession session = driver.Session())
{
IStatementResult result = session.Run("CREATE (n:" + nodeLabel +
"{name:'" + nodeName + "'})");
}
}
考虑创建连接(驱动程序)并将其作为依赖项传递到包含数据操作方法(创建节点、创建关系等)的 class。
如果这里的所有内容都在一个 class 中,您可以使 class IDisposable 并在其构造函数中创建驱动程序,并调用驱动程序 Dispose 方法作为 [=16= 的一部分]es Dispose 方法。
完成所有在 Neo4J DB 上为给定服务请求所做的工作后,您可以释放驱动程序和连接。