如下保存了之后 ggg并未更新到a对象内部的。

之前也做过把上面注视掉的两行添加到程序中的。只是因为程序结构比较复杂是在创建了IObjectContainer db对象之后才更新配置的。配制并未起到作用还是使用default的配制。看db4o自带的那个文档里面说默认是更新5 deep 的。但是实际并不是如此。不知道是因为英文的文档我理解有误,还是文档比较老没有对现有更新作出更新(比如废止的方法set()在文档内还存在)。

网上并没有找到解决办法。所以记录下来。

 

 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; } }
    }

相关文章:

  • 2021-04-15
  • 2022-12-23
  • 2021-08-19
  • 2022-12-23
  • 2021-11-19
  • 2021-08-19
  • 2021-05-03
猜你喜欢
  • 2021-09-27
  • 2021-04-15
  • 2021-12-09
  • 2023-03-21
相关资源
相似解决方案