2008-10-05 4 views
4

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

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

ответ

4

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

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

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

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

1

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

1

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

0

Сначала вам нужен ваш стол.

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

Смежные вопросы