c # хранить пользовательские настройки в базе данных - PullRequest
5 голосов
/ 05 октября 2008

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

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

Ответы [ 4 ]

4 голосов
/ 05 октября 2008

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

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

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

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

1 голос
/ 05 октября 2008

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

1 голос
/ 05 октября 2008

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

0 голосов
/ 05 октября 2008

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

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 (что я предполагаю из наличия и доступности базы данных), то это должно быть легко реализовано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...