public static string UpgradeDatabaseXaml(this IEvolver evolver, string xaml)
 {
     return(Encoding.UTF8.GetString(
                evolver.UpgradeDatabase(Encoding.UTF8.GetBytes(xaml)
                                        , b => new XamlDynamicData(Encoding.UTF8.GetString(b))
                                        )));
 }
        private static T InitRoot <T>(IEvolver evolver, T instance)
        {
            var re  = evolver as ReflectionEvolver;
            var reg = evolver as ReflectionEvolver <T>;

            if (re != null)
            {
                var versionPi = instance.GetType().GetProperty(re.VersionFieldName);
                if (versionPi == null)
                {
                    throw new EvolverException($"Root model type '{typeof(T)}' don't have a version property '{re.VersionFieldName}'");
                }
                versionPi.SetValue(instance, re.LatestVersion, null);
            }
            reg?.InitNew(instance);
            return(instance);
        }
 public static T CreateRoot <T>(this IEvolver <T> evolver)
 {
     return(InitRoot(evolver, Activator.CreateInstance <T>()));
 }
 public static T CreateRoot <T>(this IEvolver <T> evolver, T root)
 {
     return(InitRoot(evolver, root));
 }