Wie kann ein Client einen db4o-Server abfragen?

  • Ich habe einen db4o-Server und -Client eingerichtet. Meine Client-Aufrufe funktionieren nicht.

    Was für mich verwirrend ist, ist, dass die db4o-Beispiele zeigen, wie der Client den Server schließen kann, nicht jedoch, wie Daten abgerufen und gespeichert werden. Siehe: http: / /community.versant.com/Documentation/Reference/db4o-7.12/java/reference/Content/client-server/networked/simple_db4o_server.htm

    Wenn ich starte den db4o-Server und führen Sie netstat aus, ich kann sehen, dass der Port offen ist. Und auf dem Client kann ich Folgendes tun:

    Debug.WriteLine (db.Ext (). IsClosed (). ToString ());

    | | >

    Und das gibt False zurück, was gut ist.

    Wenn ich jedoch versuche, Daten abzurufen oder zu speichern, funktioniert das nicht. Beim Speichern von Daten scheint es zu funktionieren, aber ich sehe keine Daten in der Datenbank. Beim Versuch, das Objekt abzurufen, erhalte ich folgende Fehlermeldung:

    Db4objects.Db4o.Ext.Db4oException: Es wurde eine Ausnahme des Typs 'Db4objects.Db4o.Ext.Db4oException' ausgelöst. --- & gt; System.ArgumentException: Das Feld '_delegateType' ist für den Typ 'Db4objects.Db4o.Internal.Query.DelegateEnvelope' definiert. Es ist kein Feld im Zielobjekt vom Typ 'Db4objects.Db4o.Reflect.GenericObject'.

    Hier werden die Aufrufe des Clients gespeichert und abgerufen:

     Server server = new Server() { Name = "AppServerFoo" };
    IObjectContainer db = GetDatabase();
    db.Store(server);
    db.Close();
     

    Hier ist Die einzige Zeile in der GetDatabase () -Methode:

     return Db4oClientServer.OpenClient(Db4oClientServer.NewClientConfiguration(), "DellXps", 8484, "user", "password");
     

    Und hier ist der Aufruf, den Sie von der Datenbank erhalten sollen:

     IObjectContainer db = GetDatabase();
    Server testServer = db.Query<Server>(server => server.Name == "AppServerFoo").FirstOrDefault();
    db.Close();
     

    Was fehlt mir?

    22 November 2011
    Bob Horn
2 answers