1

別のオブジェクトから継承されたオブジェクトのフィールドにインデックスを付けようとしている場合、db4oは構成パラメーターを無視するようです。たとえば、次のような場合です。

public class foo
{
    private int theId;
    public int TheId {get{return theId;}set{theId=value;}}
}

public class bar:foo
{
    private string name;
    public string Name{get{return name;}set{name=value;}}
}

私の構成は次のようになります。

IEmbeddedConfiguration config = Db4oEmbedded.NewConfiguration();
config.Common.ObjectClass(typeof(foo)).ObjectField("theId").Indexed(true);

これでうまくいきます。ただし、これを実行しようとすると、次のようになります。

IEmbeddedConfiguration config = Db4oEmbedded.NewConfiguration();
config.Common.ObjectClass(typeof(bar)).ObjectField("theId").Indexed(true);

構成は無視されます。barTheIdインデックス付けされていません。

これが設計どおりである理由はわかりますが、この動作を参照している、またはこれを「落とし穴」の可能性があると指摘しているドキュメントは見つかりません。それで、それはバグですか、それとも設計によるものですか?特定のサブクラスでのみフィールドにインデックスを付けたい場合が多いように思われます。

4

1 に答える 1

2

設計によるものだと思います。宣言されているクラスのフィールドにのみインデックスを付けることができます。これは、すべてのサブクラスにも適用されます。

承知しましたが、サブクラスでのみ継承されたフィールドのインデックスを作成することは、現時点では不可能です。

こののドキュメンテーション タスクが追加されました。

于 2012-08-16T01:41:07.287 に答える