Где мне следует хранить данные конфигурации пользователя?Конкретно путь к файлу данных?
-
22-09-2019 - |
Вопрос
У меня есть приложение, использующее базу данных SQLite, и мне нужна возможность пользователя переместить файл данных и указать приложению, куда оно переместилось.Для создания модели я использовал Entity Framework, и по умолчанию она помещает строку подключения в файл App.Config.Судя по тому, что я прочитал, если я внесу изменения в строку подключения, они не вступят в силу, пока приложение не будет перезапущено.Это кажется немного неуклюжим для моего использования.Я вижу, как я могу инициализировать свою модель и передать специальную строку, но я не уверен, как лучше всего хранить основные пользовательские настройки, такие как эта?Ини, реестр, еще где-то?Я не хочу, чтобы пользователю приходилось каждый раз «открывать» файл, только когда он перемещается, и с этого момента приложение будет пытаться автоматически открыться.
Решение
Посмотри на Настройки приложения для обзора того, как создавать пользовательские настройки конфигурации, которые можно сохранить в файле user.config.От реестра более или менее отказались в пользу новой файловой системы конфигурации на основе XML.
Другие советы
Вам не обязательно использовать строку подключения, добавленную в App.Config.На самом деле вы можете пропустить его добавление в мастере EDMX.
Затем вам нужно просто разместить строку подключения в любом месте по вашему выбору и передать ее в конструктор ObjectContext.
Вы можете поместить строку подключения во внешний файл, реестр или куда угодно.
Возможно, имеет смысл иметь статический класс, который генерирует строку подключения и получает расположение файла из общего источника, который пользователь может изменить (т. е.реестр, файл на диске, переменная среды и т. д.)
Вы можете создать класс настроек, а затем сериализовать его в XML-файл с заранее заданным именем в расположении, заданном в файле app.config.Затем вы можете самостоятельно контролировать частоту чтения файла в память.Единственный раз, когда вам нужно было перезапустить приложение, было изменение местоположения файла настроек.