Использование SDF-файла (базы данных SQLCE) с пользовательским расширением в качестве типа файла данных моего приложения WPF

#.net #wpf #sql-server-ce

#.net #wpf #sql-server-ce

Вопрос:

Я создаю приложение в WPF (.NET 4)

Мое приложение создает, открывает и сохраняет файлы данных с пользовательским расширением (для наглядности я буду называть их файлами .myapp). Я использую проект установки, чтобы связать файлы .myapp с моей установленной программой, и я присвоил им их собственный значок / действия / и т.д.)

Файл .myapp — это просто файл базы данных SQLCE 3.5 с расширением, измененным с .sdf на .myapp.

Это работает, но я ищу совета о том, является ли это хорошим способом выполнения задач.

Часть меня задается вопросом, должен ли я сделать файл .myapp файлом-оболочкой, который содержит SDF, а также некоторые метаданные. Я предполагаю, что при выполнении этого таким образом мне нужно будет загрузить SDF в память при открытии файла, а затем взять на себя ответственность за «сохранение» его обратно в файл. Мои причины для рассмотрения этого варианта следующие:

  1. Это позволило бы мне хранить дополнительные метаданные наряду с sdf, например, предполагаемую версию приложения, другие быстро читаемые свойства и т.д.
  2. Это позволило бы мне открывать файлы в режиме только для чтения (т. Е. не сохраняя их обратно)
  3. Это (более того) защитило бы от того, чтобы кто-то переименовал расширение в .sdf и открыл его с помощью SQL Management Studio и возился с данными.

Был бы это возможный / лучший подход? Увижу ли я преимущества в производительности, загрузив SDF в память? Есть ли какие-либо подводные камни, на которые следует обратить внимание?

Любые другие советы приветствуются!

Ответ №1:

Использование пользовательского расширения документа в ваших файлах sdf — отличная идея. Однако не получилось бы обернуть файл sdf в другой файл и «загрузить в память», поскольку вы можете указать путь к файлу только в строке подключения SQL Server Compact. Модуль SQL Server Compact управляет «загрузкой в память» за вас и выполняет сброс на диск по мере необходимости.

1: Вы могли бы сделать это, сохранив метаданные в таблице / tables в файле sdf. 2. Открытие в режиме только для чтения — это опция строки подключения, поэтому вы можете сделать это, изменив строку подключения. 3. Вы можете указать пароль для файла (также в строке подключения), и это зашифрует файл базы данных.

Комментарии:

1. Спасибо! Это экономит мне много времени на попытки.

Ответ №2:

Еще одно преимущество заключается в том, что вы можете выполнить простое шифрование файла. Это определенно повысило бы вероятность того, что никто не откроет файл напрямую и не изменит данные.