ユーザープロファイルをDynamoDBに保存し、属性を使用して.netタイプをdynamoエントリに変換しています
これは私が使用しているコンバーターです:
public class DictRoomClassHouseInfoConverter : IPropertyConverter
{
...
public DynamoDBEntry ToEntry(object value)
{
var dictionary = value as Dictionary<RoomClass, HouseInfo>;
if (dictionary == null)
{
throw new ArgumentException("Invalid type");
}
var entry = new PrimitiveList();
foreach (var kvp in dictionary)
{
entry.Add(new Primitive { Value = string.Format("{0}|{1}|{2}", (int)kvp.Key, kvp.Value.House, kvp.Value.TimesSold) });
}
return entry;
}
}
ここで問題となるのは、ディクショナリが空で、によって空PrimitiveList
が返されたToEntry
場合、このディクショナリの変更が保存されないことです。
だから私が次のようなことをすると:
var profile = GetProfile(id);
//profile.DictProp has 3 items;
profile.DictProp.Clear();
//profile.DictProp has 0 items;
SaveProfile(profile);
var p = GetProfile(id);
//profile.DictProp has 3 items;