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