Java アプリによって生成された db4o データベースがあり、C# アプリを使用して読み取ろうとしています。
ただし、次のコード行を実行すると:
IObjectContainer db = Db4oEmbedded.OpenFile(@"..\..\..\Databases\people.db4o");
次のエラーが表示されます。
タイプ「Db4objects.Db4o.Reflect.Generic.GenericObject」のオブジェクトをタイプ「Db4objects.Db4o.Ext.Db4oDatabase」にキャストできません。
何か案は?DB に personId フィールドを (他のフィールドと共に) 含む person オブジェクトがあることは知っています。db4o バージョン 8 を使用しています。データベースの生成に使用されたバージョンがわかりません。
プログラム全体は次のとおりです。
using System;
using System.Collections.Generic;
using System.Linq;
using Db4objects.Db4o;
using Db4objects.Db4o.Config;
using MyCompany.Domain;
namespace MyCompany.Anonymizer
{
internal class Program
{
// Private methods.
private static IEmbeddedConfiguration ConfigureAlias()
{
IEmbeddedConfiguration configuration = Db4oEmbedded.NewConfiguration();
configuration.Common.AddAlias(new TypeAlias("com.theircompany.Person", "MyCompany.Domain.Person, MyCompany.Domain"));
configuration.Common.Add(new JavaSupport());
return configuration;
}
private static void Main(string[] args)
{
IObjectContainer db = Db4oEmbedded.OpenFile(@"..\..\..\Databases\people.db4o");
try
{
IList<Person> result = db.Query<Person>();
for (int i = 0; i < result.Count; i++)
{
Person person = result[i];
Console.WriteLine(string.Format("Person ID: {0}", person.personId));
}
}
finally
{
db.Close();
}
}
}
}