Поток Безопасный способ доступа к базе данных SQL CE - PullRequest
1 голос
/ 08 февраля 2012

Фон:

В моем проекте Windows Phone.Я использую локальную базу данных SQL CE для хранения даты.Создание таблиц базы данных с использованием программного обеспечения LINQ to SQL.

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

Вот проблема:

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

Любые толчки в правильном направлении сделают мой день.

1 Ответ

2 голосов
/ 08 февраля 2012

Энди, как уже упоминалось выше (честно говоря, они избили меня), проблема заключалась в доступе к базе данных, когда другой процесс все еще имел открытое соединение.В принципе, это можно легко исправить, поместив любой код, который вы запускаете для базы данных, внутри блока using, например:

using (MyDataContext db = new MyDataContext("isostore:/MyData.sdf"))
{
    //Run database logic here
}

Я думаю, в некотором смысле это имеет смысл для ошибки.То же самое происходит с открытыми файлами в WP7.

Для получения дополнительной информации и примера посмотрите эту страницу .

...