Использование базы данных MS Access в качестве формата файла для настольных приложений, нуждающихся в функциональности типа открытия / сохранения - PullRequest
1 голос
/ 29 октября 2010

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

Я написал инструмент, который делает большие вещи типа калькуляции.В настоящее время он состоит из библиотеки классов и инструмента командной строки (отдельные проекты .NET). Мы используем формат базы данных Access в качестве типа файла, потому что он может хранить все различные таблицы вместе в одном файле.Несколько других пунктов о приложении: - пользователей не так много.Нет проблем с масштабируемостью.- Есть не большие проблемы с обновлениями.- Рабочий стол желателен.Не веб.- Используя VB и .NET 3.5 SP1

Теперь мне нужно разработать интерфейс GUI, который позволит выполнять типичные операции типа Файл / Открыть и Файл / Сохранить.

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

Имеет ли тогда смысл использовать временный файл для чего-то вроде прокси?Чтобы, когда пользователь «открывает» файл, скопируйте исходный файл Access в локальный временный файл и затем используйте его для сеанса редактирования?Затем, если пользователь «сохраняет», скопировать локальный временный файл обратно в исходный путь?

Этот вопрос ясен?Дизайн ужасный ???Любые комментарии или предложения?

Обновление: [также помечен тегом ms-access] Кроме того, я пропустил тот факт, что пользователи ожидают и типичной функциональности Файл / Сохранить как.Я думаю, что дизайн, который я поставил под сомнение в этом посте, это то, что традиционно называется шаблоном Proxy design.Кто-нибудь пробовал это (успешно!) С файлами базы данных Access раньше?Слова предостережения или совета?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2010

Я полагаю, что дизайн не изящный, но если вы используете базу данных MS Access в качестве своего рода «сценария» для своих расчетов, тогда этот подход является самым простым для достижения того, что вы хотите.

Как упоминалось в @drventure, обычно вы используете транзакции для управления сохранением изменений или нет, но в вашем приложении вам придется запускать «глобальную» транзакцию после открытия базы данных доступа и совершения или отмены этой транзакции в зависимости от того, что делает пользователь.,Однако я понятия не имею, как Access выполняет обработку транзакции с несколькими изменениями в нескольких таблицах, которая «открыта» в течение длительного времени ...

В обоих подходах вам придется иметь дело с сохранениями, не закрывая приложение?В случае транзакционного подхода это довольно просто: зафиксировать глобальную транзакцию и сразу же начать новую.При использовании временного файла это может быть немного сложнее, так как это потребует закрытия и повторного открытия временного файла и обеспечения сохранения или восстановления состояния приложения.

0 голосов
/ 30 октября 2010

Хорошо, такой подход сработает, но это не самый лучший дизайн в мире. То, о чем вы говорите, это в основном транзакции. Транзакция - это набор операций с базой данных, которые являются атомарными, либо они ВСЕ входят, либо ни одна из них не делает.

Обычно вы заключаете транзакцию с BEGIN и COMMIT. Таким образом, транзакция охватывает не всю базу данных, а только конкретные части, над которыми вы работаете.

Трудно сказать из вашего описания, хотя. В вашем случае, может быть, все или ничего не будет в порядке, и описанная вами «техника копирования файла доступа» будет работать нормально.

Но если пользователь ожидает открыть БД, внести здесь несколько изменений, зафиксировать их, затем внести несколько изменений, а затем отменить их, это не сработает.

...