0

db4oオブジェクト(つまりCustomer.yap)を作成していますが、すでに作成されている場合は、既存のオブジェクト(つまりCustomer.yap)に新しいオブジェクトを挿入するだけです。

これらの両方の操作で、私は次のものを使用しています。

IObjectContainer db1 = Db4oEmbedded.OpenFile(Db4oEmbedded.NewConfiguration(),@"C:\Users\admin\Desktop\Db4oObjectFiles\Components.yap");

        try

        {

            db1.Store(comp1);

        }



        finally

        {

            db1.Close();

        }

私はそれを正しく行っていますか、それともオブジェクトが存在するかどうかを確認してから値を挿入する別のコマンドがありますか、または両方の操作に同じコードを使用できますか?つまり、db4oはオブジェクトが指定された場所に存在するかどうかを自動的に確認します。それ以外の場合は、指定された場所にオブジェクトを作成してから、オブジェクトを挿入します。

私を助けてください

期待してくれてありがとう

PS:asp.netのWebアプリケーションのコンテキストでこれを行っていますが、常に頭の中に潜んでいるこの考えがあります。実際の物理的な場所に保存するのではなく、リモート接続を使用するべきではありませんが、リモート接続のコンテキストで誰かがオブジェクトを作成および保存する方法を理解することはできませんでした。ホスト、ポートのユーザー名、パスワードなど、指定するパラメータがわかりません。また、このリモートオブジェクトファイルに接続するためにプログラムに書き込む必要のあるステートメントをデータベース接続する方法もわかりません。

私を助けて、私を導いてください。

期待していた人に感謝します

4

1 に答える 1

2

db4o はオブジェクトを挿入する代わりに自動的に更新しますが、問題があります。オブジェクト コンテナーを開いたままにしておく必要があります。db4o は、格納されたオブジェクトを追跡するローカル キャッシュを使用して動作しますが、オブジェクト コンテナーで close() を呼び出すと、ローカル キャッシュがなくなります。オブジェクト コンテナーの close() の後に以前に永続化されたオブジェクトを保存すると、重複したオブジェクトが取得されます (db4o は新しいオブジェクトと見なします)。本当にオブジェクト コンテナを閉じる必要があり、オブジェクトを更新したい場合は、db4o でクエリを実行し、更新してからストアを呼び出す必要があります (その後、close() を実行できます)。

リモート db4o サーバーへの接続方法については、http://developer.db4o.com/Documentation/Reference/db4o-7.12/java/reference/Content/client-server/networked.htm を参照してください

一番!(幸運を!)

于 2011-04-11T17:13:38.317 に答える