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





вы можете легко сериализовать классы в C#: http://www.google.com/search?q=c%23+serializer. Вы можете либо сохранить XML в поле varchar, либо, если вы хотите использовать двоичный сериализатор, вы можете сохранить его в типе данных «Image», который на самом деле является просто двоичным.
Вы можете сериализовать в базу данных или создать таблицу пользовательских настроек, содержащую пары имя-значение и привязанные к UserId. Преимущество этого способа состоит в том, что легче запрашивать и обновлять с помощью инструментов RDMS.
Для начала вам понадобится ваш стол.
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 (что я предполагаю из наличия и доступности базы данных), то это должно быть тривиально легко реализовать.
Конструктор VS сохраняет настройки свойств в классе ApplicationSettingsBase. По умолчанию эти свойства сериализованы / десериализованы в файл XML для каждого пользователя. Вы можете переопределить это поведение, используя настраиваемый SettingsProvider, в который вы можете добавить функциональность своей базы данных. Просто добавьте атрибут SettingsProvider в сгенерированный VS класс Settings:
[SettingsProvider(typeof(CustomSettingsProvider))]
internal sealed partial class Settings {
...
}
Хорошим примером этого является RegistrySettingsProvider.
Я ответил на другой аналогичный вопрос так же, как здесь.