假设我有一个看起来像这样的模型(假的,但作为一个例子)
public class PackageItem
{
public string Name { get; set;}
public bool Available { get; set;}
}
public class Package
{
public string Recipient { get; set;}
public List<PackageItem> Items { get; set;}
}
Run Code Online (Sandbox Code Playgroud)
首先创建一个新的Package实例,只需将Recipient设置为某个值.
一段时间后,(数据库已经关闭),我从数据库中检索它并向其中添加项目:
var packages = database.Query<Package>()
foreach(var package in packages)
{
package.Recipient = "Bla bla bla";
package.Items.Add(new PackageItem() { Name = "SomeName", Available = true });
database.Store(package);
}
database.Commit();
Run Code Online (Sandbox Code Playgroud)
此时,对Recipient属性的更改将保存在数据库中,但不会添加Items属性.
我发现有关db4o的一些信息,因为对List的引用没有改变而且db4o不知道List本身的更改,所以不知道发生了什么变化......这是正确的吗?
那么在使用db4o时应该如何处理List of T?
*更新:*我想要执行
database.Store(package.Items);
Run Code Online (Sandbox Code Playgroud)
会有所帮助,但事实并非如此.
这都是在Debian上使用db4和von 4上的db4o v8
你偶然发现了激活深度.
看一下文档.您需要明确存储集合中的更改:
database.Store(page.Items)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1996 次 |
| 最近记录: |