Windows Mobile Compact Framework SqlCeConnection - PullRequest
5 голосов
/ 12 марта 2010

Я слышал, что лучше иметь одно открытое соединение при запуске приложения и закрывать его, когда приложение закрывается.

Какая проблема может возникнуть при наличии нескольких соединений?

Есть ли какие-нибудь статьи о том, что рекомендуется иметь одно соединение?

Какой у вас опыт работы с sql ce?

Ответы [ 2 ]

2 голосов
/ 12 марта 2010

В нашем приложении SQL CE 3.5 / Compact Framework 3.5 мы открываем соединение при запуске и сохраняем его открытым до закрытия приложения. База данных требуется почти при каждом пользовательском взаимодействии в приложении, и держать соединение открытым быстрее, чем открывать и закрывать его по требованию.

Все обновления данных выполняются в транзакциях. Мы Commit проводим транзакции с использованием опции CommitMode.Immediate. Это гарантирует, что изменения данных будут немедленно переданы в файл, что сводит к минимуму вероятность потери данных.

2 голосов
/ 12 марта 2010

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

Однако наличие единственного соединения приводит к ленивому сбросу данных в файл и более высокой вероятности потери или повреждения данных в случае катастрофического сбоя.

Я склонен открывать фиктивное соединение с базой данных при запуске приложения, и это соединение всегда открыто, но редко или никогда не используется. Это держит двигатель "загрунтованным", если хотите. Тогда для фактического доступа к данным я использую отдельное соединение и управляю состоянием, основываясь на том, что я делаю, обычно оставляя его открытым для нескольких запросов (если хотите, псевдо-транзакцией), но не оставляю его открытым бесконечно.

...