public void SaveSetting(Guid pluginID, string name, string value)
        {
            if (pluginID == Guid.Empty)
            {
                throw new ArgumentException("Guid.Empty is not a valid value", "pluginID");
            }
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }

            oxite_PluginSetting setting = getSetting(pluginID, name);

            if (setting != null)
            {
                setting.PluginSettingValue = value;
            }
            else
            {
                context.oxite_PluginSettings.InsertOnSubmit(
                    new oxite_PluginSetting()
                {
                    SiteID             = siteID,
                    PluginID           = pluginID,
                    PluginSettingName  = name,
                    PluginSettingValue = value
                }
                    );
            }

            context.SubmitChanges();
        }
        public void Save(IBackgroundService backgroundService, NameValueCollection settings)
        {
            oxite_Plugin foundPlugin = backgroundService.ID != Guid.Empty ? (
                from p in context.oxite_Plugins
                where p.SiteID == siteID && p.PluginID == backgroundService.ID
                select p
                ).FirstOrDefault() : null;

            if (foundPlugin != null)
            {
                foundPlugin.PluginName     = backgroundService.Name;
                foundPlugin.PluginCategory = backgroundService.Category;
                foundPlugin.Enabled        = backgroundService.Enabled;
                //TODO: (erikpo) Add new fields here
            }
            else
            {
                context.oxite_Plugins.InsertOnSubmit(
                    new oxite_Plugin()
                {
                    SiteID         = siteID,
                    PluginID       = backgroundService.ID != Guid.Empty ? backgroundService.ID : Guid.NewGuid(),
                    PluginName     = backgroundService.Name,
                    PluginCategory = backgroundService.Category,
                    Enabled        = backgroundService.Enabled
                                     //TODO: (erikpo) Add new fields here
                }
                    );
            }

            if (settings != null)
            {
                foreach (string name in settings.AllKeys)
                {
                    oxite_PluginSetting setting = getSetting(backgroundService.ID, name);

                    if (setting != null)
                    {
                        setting.PluginSettingValue = settings[name];
                    }
                    else
                    {
                        context.oxite_PluginSettings.InsertOnSubmit(
                            new oxite_PluginSetting()
                        {
                            SiteID             = siteID,
                            PluginID           = backgroundService.ID,
                            PluginSettingName  = name,
                            PluginSettingValue = settings[name]
                        }
                            );
                    }
                }

                //TODO: (erikpo) Cleanup settings that aren't needed anymore
            }

            context.SubmitChanges();
        }
        public void Save(IPlugin plugin, NameValueCollection settings)
        {
            oxite_Plugin foundPlugin = (
                from p in context.oxite_Plugins
                where p.SiteID == siteID && p.PluginID == plugin.ID
                select p
                ).FirstOrDefault();

            if (foundPlugin != null)
            {
                foundPlugin.PluginName     = plugin.Name;
                foundPlugin.PluginCategory = plugin.Category;
                foundPlugin.Enabled        = plugin.Enabled;
            }
            else
            {
                context.oxite_Plugins.InsertOnSubmit(
                    new oxite_Plugin()
                {
                    SiteID         = siteID,
                    PluginID       = plugin.ID,
                    PluginName     = plugin.Name,
                    PluginCategory = plugin.Category,
                    Enabled        = plugin.Enabled
                }
                    );
            }

            if (settings != null)
            {
                foreach (string name in settings.AllKeys)
                {
                    oxite_PluginSetting setting = getSetting(plugin.ID, name);

                    if (setting != null)
                    {
                        setting.PluginSettingValue = settings[name];
                    }
                    else
                    {
                        context.oxite_PluginSettings.InsertOnSubmit(
                            new oxite_PluginSetting()
                        {
                            SiteID             = siteID,
                            PluginID           = plugin.ID,
                            PluginSettingName  = name,
                            PluginSettingValue = settings[name]
                        }
                            );
                    }
                }

                //TODO: (erikpo) Cleanup settings that aren't needed anymore
            }

            context.SubmitChanges();
        }