C# хранить пользовательские настройки в базе данных

Есть ли простой способ сохранить пользовательские настройки человека в базе данных SQL 2000. В идеале все настройки в одном поле, поэтому мне не нужно редактировать таблицу каждый раз, когда я добавляю настройки. Я имею в виду сериализацию класса настроек, если у кого-то есть пример.

Причина, по которой я не хочу использовать встроенные пользовательские настройки.NET, хранящиеся в постоянном хранилище, заключается в том, что работа использует супер обязательные профили, поэтому после выхода из системы пользовательские настройки очищаются, что является проблемой. Я отправил запрос на какие-либо решения для этого ранее, но не получил большой ответ.

4 ответа

Решение

Конструктор VS сохраняет настройки свойств в классе ApplicationSettingsBase. По умолчанию эти свойства сериализуются / десериализуются в XML-файл для каждого пользователя. Вы можете переопределить это поведение, используя пользовательский SettingsProvider, куда вы можете добавить функциональность вашей базы данных. Просто добавьте SettingsProvider атрибут к сгенерированному VS Settings учебный класс:

[SettingsProvider(typeof(CustomSettingsProvider))]
internal sealed partial class Settings { 
   ...
}

Хорошим примером этого является RegistrySettingsProvider.

Я ответил на другой подобный вопрос таким же образом здесь.

Вы можете сериализоваться в базу данных или создать таблицу параметров пользователя, содержащую пары имя-значение и с ключом UserId. Преимущество такого способа заключается в том, что его проще запрашивать и обновлять с помощью инструментов RDMS.

Вы можете легко сериализовать классы в C#: http://www.google.com/search?q=c%23+serializer. Вы можете либо сохранить XML в поле varchar, либо, если вы хотите использовать двоичный сериализатор, вы можете сохранить его в типе данных "Image", который на самом деле является просто двоичным.

Сначала тебе нужен твой стол.

create table user_settings
(
  user_id nvarchar(256) not null,
  keyword nvarchar(64) not null,
    constraint PK_user_settings primary key (user_id, keyword),
  value nvarchar(max) not null
)

Затем вы можете создать свой API:

public string GetUserSetting(string keyword, string defaultValue);
public void SetUserSetting(string keyword, string value);

Если вы уже занимаетесь разработкой CRUD (что я предполагаю из наличия и доступности базы данных), то это должно быть легко реализовано.

Другие вопросы по тегам