public void Move(DataBaseRepositoryHost repository) { var uri = new Uri(this.dataBase.TableContext.BasePath); foreach (var item in this) { var dataTable = item.Key; var table = item.Value; var path1 = table.Path; var path2 = dataTable.CategoryPath + dataTable.TableName; if (path1 == path2) { continue; } var schemaUri = new Uri(uri.ToString() + path1 + CremaSchema.SchemaExtension); var xmlUri = new Uri(uri.ToString() + path1 + CremaSchema.XmlExtension); var targetSchemaUri = new Uri(uri.ToString() + path2 + CremaSchema.SchemaExtension); var targetXmlUri = new Uri(uri.ToString() + path2 + CremaSchema.XmlExtension); if (table.TemplatedParent == null) { repository.Move(schemaUri.LocalPath, targetSchemaUri.LocalPath); } repository.Move(xmlUri.LocalPath, targetXmlUri.LocalPath); } }
public void Modify(DataBaseRepositoryHost repository, Func <Type, bool> predicate) { var uri = new Uri(this.dataBase.TypeContext.BasePath); foreach (var item in this) { var dataType = item.Key; var type = item.Value; if (predicate(type) == false) { continue; } var path1 = type.Path; var path2 = dataType.CategoryPath + dataType.Name; var schemaUri = new Uri(uri.ToString() + path1 + CremaSchema.SchemaExtension); if (dataType.DataSet == null) { repository.Delete(schemaUri.LocalPath); } else { repository.Modify(schemaUri.LocalPath, dataType.GetXmlSchema()); if (path1 != path2) { var targetSchemaUri = new Uri(uri.ToString() + path2 + CremaSchema.SchemaExtension); repository.Move(schemaUri.LocalPath, targetSchemaUri.LocalPath); } } } }