【发布时间】:2014-03-28 02:35:11
【问题描述】:
C# Neo4JClient 有GraphClient,您必须在其中调用.Connect()
var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();
在我看到的所有示例中,它都在控制台应用程序中,因此他们在 Main() 中声明 GraphClient 并重新使用它。并且文档提到了它的线程安全以及每个数据库只有一个实例并且不多次调用.Connect()。
但是在 ASP.NET 应用程序中呢?我应该将它粘贴在页面访问的某个静态类中(或将其存储在应用程序状态中)吗?像这样:
public class DbConnection
{
private static GraphClient _client;
public static GraphClient GraphClient
{
get
{
if (_client == null)
{
_client = new GraphClient(new Uri("http://localhost:7474/db/data"));
_client.Connect();
}
return _client;
}
}
}
然后我可以在任何 ASPX 页面中简单地:
protected void Page_Load(object sender, EventArgs e)
{
GraphClient client = DbConnection.GraphClient;
//do whatever I need to with client
}
还是我理解不正确,会导致各种问题?我是否需要在每个方法中调用.Connect()(或者每个页面生命周期一次),如下所示:
private GraphClient _client;
private GraphClient PageGraphClient
{
get { //same as in previous, check if null and load _client with the connection }
}
protected void Page_Load(object sender, EventArgs e)
{
//do whatever I need to with PageGraphClient
}
protected void btnSave_Click(object sender, EventArgs e)
{
//do whatever I need to with PageGraphClient
}
等等?我想我只是被整个线程安全的事情和“与数据库建立太多连接”并想确保我不会错过一个简单/正确的方法来做到这一点。
(是的,我知道我不应该直接从 ASPX 页面调用数据库命令,为了理解 GraphClient 类的工作原理,我过于简化了;)
【问题讨论】:
-
您对依赖注入有何感受?你以前做过 - 你用起来舒服吗?
-
@chris-skardon 我以前不需要这样做,但如果方法正确,我愿意学习新东西?
-
OK - 这是一个 ASP.NET aspx 项目,还是一个 MVC 项目?
-
@ChrisSkardon 这是一个 MVC 项目。
-
2018年的回复:官方驱动页面还没有解释这个
标签: c# asp.net neo4j neo4jclient