ASP.NET und Neo4jClient - wo soll die Verbindung gespeichert werden?

Der C # Neo4JClient hatGraphClient wo du anrufen musst.Connect()

var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();

In allen Beispielen, die ich gesehen habe, ist es in einer Konsolen-App, also deklarieren sieGraphClient imMain() und wiederverwenden. Und die Dokumentation erwähnt, wie es Thread-sicher ist und nur eine Instanz pro Datenbank hat und nicht aufruft.Connect() mehrmals.

Aber was ist mit ASP.NET-Anwendungen? Soll ich es in einer statischen Klasse speichern, auf die die Seiten zugreifen (oder im Anwendungsstatus speichern)? So was:

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;
        }
    }
}

Und dann in jeder ASPX-Seite könnte ich einfach:

protected void Page_Load(object sender, EventArgs e)
{
    GraphClient client = DbConnection.GraphClient;
    //do whatever I need to with client
}

Oder verstehe ich das nicht richtig und das würde alle möglichen Probleme verursachen? Muss ich anrufen?.Connect() in jeder Methode (oder vielleicht einmal pro Seitenlebenszyklus) wie folgt:

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
}

Und so weiter? Ich glaube, ich bin gerade dabei, mich auf die gesamte Thread-Safe-Sache einzulassen und "zu viele Verbindungen zur Datenbank herzustellen" und möchte sicherstellen, dass mir keine einfache / richtige Möglichkeit entgeht, dies zu tun.

(Und ja, ich weiß, dass ich die Datenbankbefehle nicht direkt von den ASPX-Seiten aufrufen sollte. Ich vereinfache dies zu sehr, um zu verstehen, wie die GraphClient-Klasse funktioniert.)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage