public static void Write(IStreamProvider streamProvider, string tableRootPath, TableMetadata metadata) { String8Block block = new String8Block(); using (ITabularWriter sw = TabularFactory.BuildWriter(streamProvider.OpenWrite(Path.Combine(tableRootPath, SchemaFileName)), SchemaFileName)) { sw.SetColumns(new string[] { "Name", "Type" }); foreach (ColumnDetails column in metadata.Schema) { sw.Write(block.GetCopy(column.Name)); sw.Write(block.GetCopy(column.Type.Name.ToString())); sw.NextRow(); } } using (ITabularWriter mw = TabularFactory.BuildWriter(streamProvider.OpenWrite(Path.Combine(tableRootPath, MetadataFileName)), MetadataFileName)) { mw.SetColumns(new string[] { "Name", "Context", "Value" }); mw.Write(block.GetCopy("RowCount")); mw.Write(String8.Empty); mw.Write(metadata.RowCount); mw.NextRow(); } streamProvider.WriteAllText(Path.Combine(tableRootPath, ConfigQueryPath), metadata.Query); s_Cache.Add($"{streamProvider}|{tableRootPath}", metadata); }