1

我想我可能在 db4o 8.0 for .NET 中遇到了一个可能的错误,因为下面会产生 StackOverFlow 异常。

public static void Test() {
    var config = Db4oEmbedded.NewConfiguration();
    var field = "ID";
    config.Common.ObjectClass(typeof(TestClass)).ObjectField(field).Indexed(true);
    config.Common.Add(new UniqueFieldValueConstraint(typeof(TestClass), field));
    var db = Db4oEmbedded.OpenFile(config, "test.yap");
    db.Store(new TestClass());
    db.Commit();
}

public class TestClass {
    //[NonSerialized]
    public object DataMember = new object();

    public string ID;
}

就我而言,我能够将 DataMember 标记为 Transient ([NonSerialized]) 并避免该问题。

然而,这使得在谓词中使用 DataMember 成为不可能(在我的情况下,DataMember 是一个简单的对象,用作所有属性中的锁,但就像没有调用 TestClass 的构造函数,因为 DataMember 在谓词中为空) .

你知道为什么它不起作用吗?我要提交错误报告吗?

4

1 回答 1

0

我已经提交了一个被认为是主要的错误:http: //tracker.db4o.com/browse/COR-2296

于 2012-06-28T08:40:22.910 回答