1

db4o データベースを作成してクライアントに送信する .net 4.0 を実行しているサーバーがあります。クライアントは .net 3.5 を実行しており、データベースを開くことができません (これは、サーバーも 3.5 のときに機能していました)。

Db4oIOExceptionクライアントは、次のようなスタック トレースをスローします。

at Db4objects.Db4o.IO.ReadOnlyBin.Write(Int64 position, Byte[] bytes, Int32 bytesToWrite)
at Db4objects.Db4o.IO.BinDecorator.Write(Int64 position, Byte[] bytes, Int32 bytesToWrite)
at Db4objects.Db4o.IO.BlockAwareBin.BlockWrite(Int32 address, Int32 offset, Byte[] bytes, Int32 length)
at Db4objects.Db4o.Internal.IoAdaptedObjectContainer.WriteBytes(ByteArrayBuffer buffer, Int32 blockedAddress, Int32 addressOffset)
at Db4objects.Db4o.Internal.LocalObjectContainer.WritePointer(Int32 id, Slot slot)
at Db4objects.Db4o.Internal.LocalObjectContainer.AllocatePointerSlot()
at Db4objects.Db4o.Internal.Ids.PointerBasedIdSystem.NewId()
at Db4objects.Db4o.Internal.Ids.TransactionalIdSystemImpl.AcquireId()
at Db4objects.Db4o.Internal.Ids.TransactionalIdSystemImpl.NewId(SlotChangeFactory slotChangeFactory)
at Db4objects.Db4o.Internal.PersistentBase.Write(Transaction trans)
...

データベースを互換性のある形式で保存する方法、またはエラーなしでロードする方法についてのアイデアはありますか?

追加情報

.net 4.0 固有のデータを保存していないようです。LINQPad でデータベースを開いて参照すると、自分のカスタム クラス (すべて 3.5 でビルドされたもの) のみが表示されます。

db4o が書き込もうとしているオブジェクト/タイプはSystem.Reflection.Cache.InternalCache. 関連する可能性がある (または関連しない可能性がある) db4o の Jira に関する問題があります。

また、不気味なほど似たスタック トレースが報告されているバグもあります。

を使用するDb4oEmbedded.OpenFile(Db4oConfiguration.Default(), path)と、この例外が発生します。代わりに使用Db4oEmbedded.OpenFile(path)すると、例外はスローされませんが、復元されたデータから一部のオブジェクトが欠落しています。

4

1 に答える 1