2010-11-20 8 views
1

私はLockDatabaseFile=false設定値で2つの異なる接続からdb4oデータベースファイルに接続しています。複数の接続から同じdb4oファイルを使用できないのはなぜですか?

IObjectContainerからオブジェクトを保存すると、そのオブジェクトを他のIObjectContainerから同時に取得できません。ストアの後でトランザクションをコミットしますが、それでも他のアクティブなIObjectContainerからそのオブジェクトをすぐに取得できません。

何が問題ですか?

答えて

4

db4oのは、書き込みモードで複数回のデータベースファイルを開くことができるように設計されていません。あなたがしていることによって、あなたはデータベースファイルを破壊します。代わりにクライアント/サーバーモードを使用してください。

1

まず、このオプションは危険です。これにより、2つ(またはそれ以上)のアプリケーションがdbファイルを同時に変更できるようになります。破損はほぼ保証されています。

正しく理解していれば、データベースを開く2つの 'クライアント'アプリケーションがあります(OpenFile()を使用しています)。

CSモードを使用しようとしましたか?

どのようにオブジェクトの存在を確認していますか?クエリを使用しますか? (クエリの表示方法)

設定はどのようになっていますか?

ベスト

+0

こんにちは!はい、危険です。私のアプリケーションはInternet Explorerアドインです。 IEで「タブ」を開くと、アドインが読み込まれます。 "別のタブ"を開くと、dbに接続できません。そして、私は上記の方法を使用して、それは働いているが、いくつかの問題があります.. –

+0

こんにちは。私はIEのアドインを書いたことは一度もありませんが、このシナリオでは、CS4モードでdb4oを実行する別のプロセスを作成し、各タブからこのプロセスに接続する方がより信頼性の高いソリューションと考えています。 IEが終了すると、このプロセスダウを撃つことができます。 – Vagaus

関連する問題