Я слышу, что это лучше, чтобы иметь одно соединение, открытое после запуска приложения и закрытия его, когда приложение закрывается.
Какая проблема может произойти, имея многочисленные связи?
Какие-либо статьи там, что это - лучшие практики, чтобы иметь одно соединение?
Каков Ваш опыт с sql ce?
В нашем приложении SQL CE 3.5 / Compact Framework 3.5 мы открываем соединение при запуске и оставляем его открытым до закрытия приложения. База данных требуется почти при каждом взаимодействии пользователя с приложением, и поддерживать соединение открытым быстрее, чем открывать и закрывать его по требованию.
Все обновления данных выполняются в транзакциях. Мы фиксируем
транзакции, используя параметр CommitMode.Immediate
. Это гарантирует, что изменения данных немедленно записываются в файл, сводя к минимуму возможность потери данных.
Это действительно зависит от ситуации. Для производительности SQL CE лучше всего работает, если всегда есть живое соединение с базой данных, так как движку не нужно создавать все при каждом подключении.
Однако наличие единственного соединения приводит к ленивому сбрасыванию данных в файл и более высокой вероятности потери или повреждения данных в случае катастрофического сбоя.
Я обычно открываю "фиктивное" соединение с базой данных при запуске приложения и держу это соединение всегда открытым, но редко или вообще никогда не используемым. Это позволяет "запустить двигатель", если хотите. Затем для фактического доступа к данным я использую отдельное соединение и управляю состоянием в зависимости от того, чем я занимаюсь, обычно оставляя его открытым для нескольких запросов (псевдотранзакция, если хотите), но не оставляя его открытым бесконечно.