/// <summary>
        /// Initializes the database.
        /// </summary>
        private void InitializeDb()
        {
            try {
                using (var ts = new TransactionScope(TransactionScopeOption.RequiresNew,
                                                     new TransactionOptions()
                {
                    IsolationLevel = IsolationLevel.ReadUncommitted
                })) {
                    using (var context = new MetaFSDB()) {
                        // Create basic categories
                        if (!context.Categories.Any())
                        {
                            context.Categories.AddRange(GetBasicCategories());
                        }

                        // Create basic object types
                        if (!context.ObjectTypes.Any())
                        {
                            context.ObjectTypes.AddRange(GetBasicObjectTypes());
                        }

                        // Register PC
                        SelectedMac = NetworkOps.GetMacAddress();

                        var registeredPc = context.RegisteredPCs.FirstOrDefault(x => x.PCName.Equals(Environment.MachineName,
                                                                                                     StringComparison.OrdinalIgnoreCase));
                        if (registeredPc == null)
                        {
                            registeredPc = new RegisteredPC()
                            {
                                MacAddress = SelectedMac,
                                IsEnabled  = true,
                                PCName     = Environment.MachineName
                            };
                            context.RegisteredPCs.Add(registeredPc);
                        }
                        else
                        {
                            registeredPc.MacAddress = SelectedMac;
                            context.RegisteredPCs.Attach(registeredPc);
                            var entry = context.Entry(registeredPc);
                            entry.Property(e => e.MacAddress).IsModified = true;
                        }

                        context.SaveChanges();

                        PcIdentifier = registeredPc.PCId;
                        MachineName  = registeredPc.PCName;
                    }
                    ts.Complete();
                }
            } catch (Exception ex) {
                Logger.LogError(ex);
            }
        }
        /// <summary>
        /// Updates the existing record.
        /// </summary>
        /// <param name="currentMetadata">The current metadata.</param>
        /// <param name="context">The context.</param>
        /// <param name="metadata">The metadata.</param>
        private void UpdateExistingRecord(IFileMetadata currentMetadata, MetaFSDB context, XDocument metadata)
        {
            var existing = context.Metadatas.FirstOrDefault(x => x.MetaId == currentMetadata.MetadataId);

            existing.Metadata1 = metadata.ToString();
            context.Metadatas.Attach(existing);
            var entry = context.Entry(existing);

            entry.Property(e => e.Metadata1).IsModified = true;
            context.SaveChanges();
        }