的C#Neo4JClient有GraphClient
,你必須調用.Connect()
ASP.NET和Neo4jClient - 在哪裏存儲連接?
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我以前不必這麼做,但如果這是正確的方法,我願意學習新的東西嗎? –
好的 - 這是ASP.NET aspx項目還是MVC項目? –