Beispiel #1
0
        private static string GetTablesHashValue(SerializationSet dataSet)
        {
            var args = dataSet.Tables.Select(item => item.HashValue).ToArray();

            using var algorithm = HashAlgorithm.Create("SHA1");
            return(HashUtility.GetHashValue(algorithm, args));
        }
        public static CremaDataSet Create(SerializationSet serializedSet)
        {
            var dataSet = new CremaDataSet();

            foreach (var item in serializedSet.Types)
            {
                var dataType = dataSet.Types.Add();
                Import(dataType, item);
            }

            var tables = serializedSet.Tables.Where(item => item.Parent == string.Empty && item.TemplatedParent == string.Empty);

            foreach (var item in tables)
            {
                var dataTable = dataSet.Tables.Add(item.TableName);
                Import(dataTable, item);
            }

            var childs = serializedSet.Tables.Where(item => item.Parent != string.Empty && item.TemplatedParent == string.Empty);

            foreach (var item in childs)
            {
                var dataTable  = dataSet.Tables[item.Parent];
                var childTable = dataTable.Childs.Add(item.TableName);
                Import(childTable, item);
            }

            var derived = serializedSet.Tables.Where(item => item.Parent == string.Empty && item.TemplatedParent != string.Empty);

            foreach (var item in derived)
            {
                var dataTable = dataSet.Tables[item.TemplatedParent];
                dataTable.Inherit(item.TableName);
            }

            foreach (var item in serializedSet.Tables)
            {
                if (item.TemplatedParent != string.Empty)
                {
                    continue;
                }
                var dataTable = dataSet.Tables[item.Name];
            }

            foreach (var item in serializedSet.Tables)
            {
                var dataTable = dataSet.Tables[item.Name];
                ImportRow(dataTable, item);
            }

            return(dataSet);
        }
Beispiel #3
0
 public static void Serialize(this IDataSerializer serializer, string filename, SerializationSet dataSet)
 {
     FileUtility.Backup(filename);
     try
     {
         FileUtility.Prepare(filename);
         using var stream = File.OpenWrite(filename);
         serializer.Serialize(stream, dataSet);
     }
     catch
     {
         FileUtility.Restore(filename);
     }
     finally
     {
         FileUtility.Clean(filename);
     }
 }