1

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();
            }
        }
    }
}
4

1 に答える 1