2.0.0
is major jump up, some new features and has slightly breaking changes.
(some changes exists 12h after released, require to use 2.0.4)
New Features
Validator
New MemoryDatabase.Validate()
method validates data is valid.
In default, check duplicate key in unique index table.
IValidatable<T>
to make custom validator logic.
[MemoryTable("quest_master"), MessagePackObject(true)]
public class QuestMaster : IValidatable<QuestMaster>
{
[PrimaryKey]
public int QuestId { get; set; }
public string Name { get; set; }
public int RewardItemId { get; set; }
public int Cost { get; set; }
public void Validate(IValidator<QuestMaster> validator)
{
var itemMaster = validator.GetReferenceSet<ItemMaster>();
// check external reference.
itemMaster.Exists(x => x.RewardItemId, x => x.ItemId);
// check value range
validator.Validate(x => x.Cost >= 10);
validator.Validate(x => x.Cost <= 50);
// check all table data
if (validator.CallOnce())
{
var quests = validator.GetTableSet();
// check unique other than index keys
quests.Unique(x => x.Name);
}
}
}
MetaMemoryDatabase
(2.0.4)
MemoryDatabase.GetMetaDatabase()
to get meta data of database tables, properties and indexes.
You can use the data to make external data importer/exporter.
Breaking Changes
Unique key find methods(FindXxx
) throws KeyNotFoundException
when not found.
You can use new TryFindXxx
instead.