Пример #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));
            }
        }
Пример #2
0
        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);
        }
Пример #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);
     }
 }