Ejemplo n.º 1
0
        public void SaveConfig(IReadTransactionContext tx = null)
        {
            if (_access != EFileAccess.ReadWrite)
            {
                throw new NFSdbIOException("Attempt to save partition {0} config in read-only state", DirectoryPath);
            }

            if (!Directory.Exists(DirectoryPath))
            {
                Directory.CreateDirectory(DirectoryPath);
            }

            var config = _config;

            if (config == null)
            {
                config         = new PartitionConfig();
                config.Columns = _metadata.Settings.BuildColumns();
            }
            config.PartitionID = PartitionID;
            config.RecordHint  = tx != null?tx.GetPartitionTx(PartitionID).NextRowID : _metadata.Settings.RecordHint;

            using (var fs = File.Open(Path.Combine(DirectoryPath, PartitionSettingsFileName), FileMode.Create, FileAccess.ReadWrite))
            {
                ConfigurationSerializer.WritePartitionConfiguration(fs, config);
            }
            _config = config;
        }