Entity Framework с исключением SQLite: базовый поставщик не удалось выполнить - PullRequest
3 голосов
/ 19 ноября 2011

Я использую Entity Framework (.NET 4.0) с SQLite в качестве базовой базы данных и получаю исключение при попытке зафиксировать некоторые изменения в базе данных:

Ошибка основного поставщикапри фиксации.

Трассировка стека:

System.Data.EntityException: The underlying provider failed on Commit. ---> System.Data.SQLite.SQLiteException: The database file is locked
database is locked
   at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
   at System.Data.SQLite.SQLiteDataReader.NextResult()
   at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavi
or behave)
   at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
   at System.Data.SQLite.SQLiteTransaction.Commit()
   at System.Data.EntityClient.EntityTransaction.Commit()
   --- End of inner exception stack trace ---
   at System.Data.EntityClient.EntityTransaction.Commit()
   at System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
   at MySystem.MySystemService.UpdateFollowersAndUsers() in C:\Path\To\MySystem\MySystemService.cs:line 295

Мой код довольно прост:

// Gets more followers for the competitor and updates the database
List<Follower> moreFollowers = GetMoreFollowers(competitor);

// Add the new followers to the database
using (MySystemEntities db = new MySystemEntities())
{
    try
    {
        foreach (Follower f in moreFollowers)
        {
            db.AddToFollowers(f);
        }
        db.SaveChanges();
    }
    catch (Exception e)
    {
        Console.WriteLine(e.ToString());
    }
}

Этот фрагмент кода находится внутри MyServiceОн приходит с группой из 5000 подписчиков и получает вышеуказанное исключение.Однако, когда я извлекаю тот же фрагмент кода в функцию Main и просто вручную добавляю несколько подписчиков, он больше не выдает исключение, и подписчики успешно добавляются в мою базу данных. Очевидно, файл базы данных заблокирован, что может быть причиной этой проблемы?

1 Ответ

1 голос
/ 19 ноября 2011

Я только что нашел ответ в другом вопросе SO: 'Файл базы данных заблокирован' с System.Data.SQLite

По иронии судьбы, ОП также отвечает на свой вопрос :).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...