private XElement serialize <T>(T entity) where T : IPersistableEntity
        {
            var props = typeof(T).GetProperties().Where(x => Attribute.IsDefined(x, typeof(PersistedAttribute)));

            XElement child = new XElement(typeof(T).Name);

            foreach (var prop in props)
            {
                string propName = prop.Name;
                {
                    var attr = prop.GetCustomAttribute <PersistedAttribute>();
                    if (attr.PersistedName != null)
                    {
                        propName = attr.PersistedName;
                    }
                }

                XElement propChild = new XElement(propName);
                propChild.SetValue(Transformers.GetFittingTransformerToString(prop.PropertyType)(prop.GetValue(entity)));
                child.Add(propChild);
            }

            return(child);
        }