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); }
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); } }