我想我可能在 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 在谓词中为空) .
你知道为什么它不起作用吗?我要提交错误报告吗?