このようなモデルがあるとしましょう(偽物ですが、例として)
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;}
}
最初に、受信者だけを値に設定して、Package の新しいインスタンスを作成します。
しばらくして (その間にデータベースが閉じられました)、データベースからそれを取得して項目を追加します。
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();
この時点で、Recipient プロパティへの変更はデータベースに保存されますが、Items プロパティへの追加は保存されません。
リストへの参照が変更されておらず、db4o がリスト自体への変更を認識していないため、何も変更されていないことを db4o が認識していないという情報を見つけました...これは正しいですか?
また、db4o を使用する場合、T のリストをどのように処理すればよいでしょうか?
*更新: *実行すると思った
database.Store(package.Items);
役に立ちますが、そうではありません。
これはすべて、Mono 2.11 を搭載した Debian で db4o v8 を使用しています。