2010-11-20 27 views
1

我只是使用LockDatabaseFile=false配置值連接到來自2個不同連接的db4o數據庫文件。爲什麼我不能從多個連接使用相同的db4o文件?

當我從一個IObjectContainer中存儲一個對象時,我無法同時從另一個IObjectContainer中獲取該對象。我在Store之後提交事務,但仍然無法立即從另一個活動的IObjectContainer獲取該對象。

什麼問題?

回答

4

db4o的目的不是要允許打開寫模式多次數據庫文件。隨着你在做什麼,你會損壞數據庫文件。請改用客戶端/服務器模式。

1

首先,讓我說這個選項是危險的。它允許兩個(或更多)應用程序同時更改數據庫文件:幾乎保證了損壞。

如果我的理解正確,你有2個'客戶'應用程序打開數據庫(使用OpenFile()),對吧?

您是否嘗試過使用CS模式?

你如何檢查對象的存在?使用查詢? (你的查詢是怎樣的?)

你的配置是怎樣的?

最佳

+0

嗨!是的,我知道這很危險:)我的應用程序是一個Internet Explorer加載項。當您在IE中打開「選項卡」時,加載項被加載。當你打開「另一個選項卡」時,它無法連接到數據庫。然後我用上述方法,它的工作,但有一些問題.. – 2010-11-21 08:09:08

+0

嗨。我從來沒有寫過IE插件,但在這種情況下,我認爲更可靠的解決方案是創建一個單獨的進程在CS模式下運行db4o並從每個選項卡連接到此進程。當IE關閉時,你可以拍攝這個過程。 – Vagaus 2010-11-21 13:27:14

相關問題