別のオブジェクトから継承されたオブジェクトのフィールドにインデックスを付けようとしている場合、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);
構成は無視されます。bar
。TheId
インデックス付けされていません。
これが設計どおりである理由はわかりますが、この動作を参照している、またはこれを「落とし穴」の可能性があると指摘しているドキュメントは見つかりません。それで、それはバグですか、それとも設計によるものですか?特定のサブクラスでのみフィールドにインデックスを付けたい場合が多いように思われます。