如下保存了之后 ggg并未更新到a对象内部的。
之前也做过把上面注视掉的两行添加到程序中的。只是因为程序结构比较复杂是在创建了IObjectContainer db对象之后才更新配置的。配制并未起到作用还是使用default的配制。看db4o自带的那个文档里面说默认是更新5 deep 的。但是实际并不是如此。不知道是因为英文的文档我理解有误,还是文档比较老没有对现有更新作出更新(比如废止的方法set()在文档内还存在)。
网上并没有找到解决办法。所以记录下来。
Code
class Program
{
static void Main(string[] args)
{
//Db4oFactory.Configure().UpdateDepth(2); //I also try this code , but don't work either.
// Db4oFactory.Configure().ObjectClass(typeof(StudentInfo)).CascadeOnUpdate(true);
IObjectContainer db = Db4oFactory.OpenFile("aaaa");
A a = new A();
a.S.Add("aaa");
a.S.Add("bb");
a.S.Add("c");
db.Store(a);
db.Commit();
IList<A> list = db.Query<A>(typeof(A));
foreach (A aa in list)
{
aa.S.Add("ggg");
foreach (string s in aa.S)
{
Console.WriteLine(s);
}
db.Store(aa);
}
db.Commit();
//or db.Close();
Console.Read();
}
}
public class A
{
private List<string> s=new List<string>();
public List<string> S
{ get { return s; } }
}